人大金仓数据库 Laravel5.x 兼容问题处理
基础版本信息
人大金仓V8R3
Laravel 5.x
centos7.x
魔改数据库文件
\vendor\laravel\framework\src\Illuminate\Database\Connectors\ConnectionFactory.php
246 行,增加 case 'kdb':
到 case 'pgsql'
上方
278 行,增加 case 'kdb':
到 case 'pgsql'
上方
\vendor\laravel\framework\src\Illuminate\Database\Connectors\ConnectionFactory.php
145 行,替换数据库 DSN
// $dsn="pgsql:{$host}dbname={$database}"
$dsn="kdb:{$host}dbname={$database}"
扩展加载
php.ini 文件中增加
extension=pdo_kdb
extension=pdo_pgsql
数据库配置修改
Laravel database.php 中配置 default 为 pgsql,pgsql 中的 driver 改为 kdb 其他看情况改,别忘了 PG 比 MYSQL 多了一层 schema。
libkdb.so.5
未找到问题
1 要特别注意 pdo_kdb.so 的版本问题,尽量接近你要部署的 PHP版本
2 对着你的 php 扩展目录内的随便一个扩展来一下 ldd
命令,找下路径,然后把官方提供的动态库 libkci.so.5
放入你的程序加载位置中。
关于 ldd 命令的效果如下
# ldd /bin/lnlibc.so.6
=> /lib/libc.so.6 (0×40021000)/lib/ld-linux.so.2
=> /lib/ld- linux.so.2 (0×40000000)
libssl.so.6
未找到问题
要小心在 docker 中使用造成的 openssl 依赖库丢失,这个 shit 数据库引用了一个 0.9.8e 的 openssl 库,如果你使用较新的操作系统可能不包含相应的动态库文件,要么你自己在容器对应的 Linux发行版内编译一份上古版本的 openssl 动态库,要么你换一个linux发行版。