GBase 8c是一款多模多态的企业级分布式数据库,支持行存、列存、内存等多种存储模式,支持单机、主备式、分布式等多种部署形态。GBase 8c具备高性能、高可用、弹性伸缩、高安全性等特性,可以部署在物理机、虚拟机、容器、私有云和公有云,为关键行业核心系统、互联网业务系统和政企业务系统提供安全、稳定、可靠的数据存储和管理服务。
GBase 8c 底层是 openGauss 3.0.0,openGauss 3.0.0 是基于 pg 9.2 做的开发,所以一些pg的接口做简单适配后,GBase 8c 也能适用。
在日常使用 GBase 8c 时,会涉及到接口的一些使用和适配。因为不熟悉GBase 8c,遇到了很多问题,现在将日常遇见的 jdbc,odbc 接口问题,做个记录方便日常的查看,也希望能帮助到使用GBase 8c的朋友。
1:C#EFCore 连接 GBase8c 驱动异常
现象1:驱动配置:Npgsql.EntityFrameworkCore.PostgreSQL
.net core EF 连接 PostgreSQL
引入包:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Npgsql.EntityFrameworkCore.PostgreSQL;
现象2:连接驱动报异常: Severity: ERROR SqlState: 0A000 MessageText: DISCARD statement is not yet supported.Npgsql.PostgresException (0x80004005): 0A000: DISCARD statement is not yet supported. at Npgsql.NpgsqlConnector.
解决办法:添加配置No Reset On Close=true;
参考文档:
PG官网查到了问题及其原因
https://github.com/YugaByte/yugabyte-db/issues/1512
https://www.npgsql.org/doc/performance.html#pooled-connection-reset
配置方法:配置加到链接串的后面:
PORT=5432;DATABASE=gbase8s;HOST=172.16.92.178;PASSWORD=Gbase_123;USER ID=test_user;No Reset On Close=true;
2: GBase 8c hibernate 方言包 问题
现象1:GBase 8c 不提供 hibernate 方言包 ,导致报错。
处理方法:使用pg方言包。
配置方法:如下图所示,使用此方言: org.hibernate.dialect.PostgreSQL92Dialect 替换掉 原来的方言。

现象2: DatabaseProductName 方法获取到的数据库名称是 postgresql ,这个名称跟我们所使用的其他数据裤重复,无法获取 GBase 8c 厂商名。
处理方法:获取最新的 GBase 8c 驱动包(非pg驱动包和opengauss 驱动,为此问题专门出的GBase 8c jdbc驱动包)。
3:在windows 环境下使用ODBC 连接GBase 8c
1:驱动包获取
此驱动包来源于GaussDB,只是简单改了下zip包的名称: https://dbs-download.obs.cn-north-1.myhuaweicloud.com/rds/GaussDB_opengauss_client_tools.zip
2:安装
1、解压zip包,双击安装psqlodbc_x64.msi

2、 一路 next 即可:

2、找到ODBC数据源管理程序
方式:windows+R 输入 control 进入到控制面板页面 —> 页面右上角查看方式选择小图标或大图标 —> 选择管理工具或 windows 工具 —> 找到 ODBC 数据源(64 位)
3、配置ODBC数据源,添加PostgreSQL类型的用户DSN:


4、填写数据库服务器的连接方式,IP、端口、用户名密码信息等,点击 Test 可对连接进行测试:





