南大通用 GBase 8s 数据库适配说明

更新时间:2026-06-26 · 适用项目:智慧餐厅 store
当前结论: GBase 8s 服务端、ClientSDK、ODBC、PHP PDO_ODBC、ThinkPHP 连接器的基础链路已经打通;智慧餐厅项目已具备 GBase 8s 接入骨架,并完成部分后台核心接口验证。后续重点是继续处理 MySQL 方言 SQL,尤其是订单、统计和异步导出链路。

一、安装部署操作步骤

1. 安装 GBase 8s 服务端

项目示例值
服务端目录/opt/gbase8s
数据库用户gbasedbt
实例名gbase01
监听端口9088
环境文件/home/gbasedbt/profile.gbase01
配置文件/opt/gbase8s/etc/onconfig.gbase01
SQLHOSTS/opt/gbase8s/etc/sqlhosts.gbase01
onstat -
netstat -tulnp | grep 9088

2. 安装 ClientSDK 与 unixODBC

安装 GBase ClientSDK 后,配置动态库路径、SQLHOSTS、ODBC Driver。当前项目使用的驱动名为:

GBase ODBC DRIVER (64-bit)

需要维护的关键配置文件:

/etc/odbcinst.ini
/etc/odbc.ini
/opt/gbasecsdk/etc/sqlhosts

3. 配置 PHP PDO_ODBC

cd /www/server/php/73/src/ext/pdo_odbc
/www/server/php/73/bin/phpize
./configure --with-php-config=/www/server/php/73/bin/php-config --with-pdo-odbc=unixODBC,/usr
make -j1
make install
php -m | grep PDO_ODBC

4. 分层验证

  1. 使用 dbaccess 验证 GBase 本机建库、建表、插入、查询。
  2. 使用 isql 验证 unixODBC 到 GBase 的连接。
  3. 使用独立 PHP 脚本验证 PDO_ODBC 查询、写入、回读。
  4. 使用 ThinkPHP Db::connect 验证项目连接器。
  5. 使用业务接口验证项目真实 SQL。
本次 POC 已验证:Db::connectDb::queryDb::execute、QueryBuilder findcount 均可用。

二、智慧餐厅项目连接步骤

1. 新增项目文件

文件作用
thinkphp/library/think/db/connector/Gbase8s.phpThinkPHP GBase 8s 数据库连接器
thinkphp/library/think/db/builder/Gbase8s.phpThinkPHP GBase 8s SQL Builder
application/config/gbase8s.database.example.phpGBase 8s 数据库配置示例

2. 复制配置示例

cp application/config/gbase8s.database.example.php application/config/local/gbase8s.database.php

3. 修改连接参数

return [
    'type'          => 'gbase8s',
    'hostname'      => '127.0.0.1',
    'hostport'      => '9088',
    'database'      => 'zhct',
    'username'      => 'gbasedbt',
    'password'      => 'password',
    'prefix'        => 'ydy_',
    'server'        => 'gbase01',
    'odbc_driver'   => 'GBase ODBC DRIVER (64-bit)',
    'gbasecsdk_dir' => '/opt/gbasecsdk',
    'gbase_sqlhosts'=> '/opt/gbasecsdk/etc/sqlhosts',
    'db_locale'     => 'zh_CN.utf8',
    'client_locale' => 'zh_CN.utf8',
];

4. 连接链路

ThinkPHP Db::connect
-> think\db\connector\Gbase8s
-> PDO_ODBC
-> unixODBC
-> GBase ODBC Driver
-> GBase 8s

三、本次项目适配总结

技术路线 采用已验证的 PDO_ODBC 路线,保留 PDO_GBASEDBT 作为厂商后续确认的备选。
连接器能力 支持 DSN 拼接、环境变量设置、字段读取、表读取、基础查询、写入和最近插入 ID。
Builder 适配 避免 MySQL 反引号字段引用,并适配批量插入 SQL。
业务 SQL 已处理部分 GROUP_CONCAT、宽松 GROUP BY、排序和字段查询兼容问题。

已处理的典型 SQL 差异

MySQL:
GROUP_CONCAT(meal.id ORDER BY meal.id ASC)

GBase 8s:
LISTAGG(meal.id, ',') WITHIN GROUP (ORDER BY meal.id ASC)

已验证接口范围

staff_tree
staff_sport
department_all
station_show
identity_lists
card_list
card_log_list
card_issue_staff
subsidy_list
适配过程中发现的部分问题不是 GBase SQL 兼容问题,而是服务器部署代码版本不一致导致。涉及鉴权和数据权限基类时,不能通过补空方法或弱化权限来临时绕过,应同步完整代码基线后继续验证。

四、后续建议

  1. 正式信创环境到位后,复跑 GBase 服务、ODBC、PHP、ThinkPHP、业务接口五层验证。
  2. 继续扫描 DATE_FORMATGROUP_CONCATFIND_IN_SETLIMIT、反引号、宽松 GROUP BY 等 MySQL 方言。
  3. 重点回归 9 类异步导出相关页面:消费订单、人员消费明细、部门消费明细、设备消费明细、充值统计、补贴统计、菜品销量统计、餐厅经营汇总表、档口营收结算表。
  4. 用 MySQL 与 GBase 双环境对比接口返回、统计口径、分页、排序和导出结果。

五、最终口径

本次南大通用 GBase 8s 适配已经完成“能安装、能连接、能查询、能写入、ThinkPHP 能识别 gbase8s、项目能通过 GBase 连接器执行基础查询、部分后台核心接口已验证通过”的基础目标。当前仍属于“基础链路打通 + 部分业务适配完成”阶段,后续需要继续推进全量业务 SQL 兼容、数据迁移验证、异步导出验证、统计口径对比和正式信创环境复验。