概要

信创大势所趋,吾等上下求索

参考文档
Linux:人大金仓数据库-KingBaseES V8与 php7的连接配置
laravel9适配人大金仓(kingbase)数据库
thinkphp6适配人大金仓(Kingbase)数据库

数据库选型

目前比较有名的国产数据库听到的有两个,一个是达梦,一个是人大金仓。我们在做选型的时候为了更好的适配现有的代码,选择了人大金仓。 原因是人大金仓是以pgsql为基础的,而市面上大部分的语言框架都能支持pgsql。

安装数据库

去人大金仓官网下载即可,安装还是比较简单的,我安装了最新的V9版本,需要注意的是许可文件要下载对应版本,别搞混了。安装完成后是可以用它自带的工具进行可视化管理,当然也可以用传统的navicat进行管理,新建连接的时候选pgsql就行。
在这里插入图片描述

适配php

人大金仓目前官网的提供的php扩展,只支持5.6和7.2,而且是线程安全的版本,这个多少让我初次调试的时候踩了很多坑。通过这篇文章,里面提到的其他驱动版本,我进行了php8.1的适配,但效果不佳,无奈之余通过官网加入了QQ技术群。 通过和群里的大佬一连串沟通,终于拿到了php8.1的扩展,成功连接上了数据库。php8.1 pdo_kdb.so 扩展传送门
可以使用下面的代码进行单元测试

<?php
$dsn = 'kdb:host=192.168.0.34;dbname=test;port=54321';
$user = 'system';
$password = 'xxxxxxx';
$dbh = null;
try {
  $dbh = new PDO($dsn,$user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} catch (Exception $e) {
  echo 'Connection Failed: ' . $e->getMessage() ."\n";
}

if(!$dbh){
  echo "Error : Unable to open database\n";
} else {
  echo "Opened database successfully\n";
}
$sql = 'create table "users"
    (
        "id" SERIAL primary key,
        "user_name" VARCHAR(20),
        "created_at" TIMESTAMP,
        "updated_at" TIMESTAMP DEFAULT now()::timestamp(0)
    )';
$result = $dbh->exec($sql);
?>

适配laravel9

因为人大金仓以pqsql为基础,而laravel9是支持pqsql的,所以可以参考pqsql进行驱动类的构建,这里已经有大神网友做了总结,我试了下,可以顺利使用。

小结

  1. 安装驱动是整个过程中最难的一步,涉及到的知识点也比较多,当然最重要的还是拿到正确的驱动包
  2. 适配注意事项:
    不支持default
    不支持DB:raw这种写法
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐