概要
信创大势所趋,吾等上下求索
参考文档
Linux:人大金仓数据库-KingBaseES V8与 php7的连接配置
laravel9适配人大金仓(kingbase)数据库
thinkphp6适配人大金仓(Kingbase)数据库
数据库选型
目前比较有名的国产数据库听到的有两个,一个是达梦,一个是人大金仓。我们在做选型的时候为了更好的适配现有的代码,选择了人大金仓。 原因是人大金仓是以pgsql为基础的,而市面上大部分的语音框架都能支持pgsql。
安装数据库
去人大金仓官网下载即可,安装还是比较简单的,我安装了最新的V9版本,需要注意的是许可文件要下载对应版本,别搞混了。安装完成后是可以用它自带的工具进行可视化管理,当然也可以用传统的navicat进行管理,新建连接的时候选pgsql就行。
适配php
人大金仓目前官网的提供的php扩展,只支持5.6和7.2,而且是线程安全的版本,这个多少让我初次调试的时候踩了很多坑。通过这篇文章,里面提到的其他驱动版本,我进行了php8.1的适配,但效果不佳,无奈之余通过官网加入了QQ技术群。 通过和群里的大佬一连串沟通,终于拿到了php8.1的扩展,成功连接上了数据库。扩展传送门。
可以使用下面的代码进行单元测试
<?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进行驱动类的构建,这里已经有大神网友做了总结,我试了下,可以顺利使用。
小结
- 安装驱动是整个过程中最难的一步,涉及到的知识点也比较多,当然最重要的还是拿到争取的驱动包
- 适配注意事项:
不支持default
不支持DB:raw这种写法