返回首页

gbase数据、南大通用产品文档:GBase8sSQLMoreResults(仅限二级)

更新日期:2024年09月11日

SQLMoreResults 确定在包含 SELECT 、UPDATE 、INSERT 或 DELETE 语句的 hstmt
上是否有更多结果可用。如果是,则初始化这些结果的处理。
下表描述了 SQLMoreResults 的 SQLSTATE 和错误值。

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 231 -
SQLSTATE
错误值
错误消息
01000
-11001
General warning
S1000
-11060
General error
S1001
-11061
Memory-allocation failure
S1008
-11065
Operation canceled
S1010
-11067
Function-sequence error
S1T00
-11094
Time-out expired
08S01
-11301
A protocol error has been detected. Current connection is
closed.

户的网络进行配置修改。32 表示子网掩码为1 的位数,即255.255.255.255

sha256 表示连接时jack 用户的密码使用sha256 算法加密。
如果将ODBC 客户端配置在和要连接的数据库主节点在同一台机器上,则可使用local
trust 认证方式,如下:

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
95
local all all trust
如果将ODBC客户端配置在和要连接的数据库主节点在不同机器上,
则需要使用sha256
认证方式,如下:
host all all xxx.xxx.xxx.xxx/32 sha256
(4)
重启数据库。
gha_ctl stop all -l http://:2379
gha_ctl start all -l http://:2379
步骤9 在客户端配置环境变量。
vim ~/.bashrc
在配置文件中追加以下内容。
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH export
ODBCSYSINI=/usr/local/etc
export ODBCINI=/usr/local/etc/odbc.ini
步骤10 执行如下命令使设置生效。
source ~/.bashrc
----结束
测试数据源配置
执行./isql -v MPPODBC(数据源名称)命令。

如果显示如下信息,表明配置正确,连接成功。
+---------------------------------------+
| Connected!
|
| sql-statement
| help [tablename]
| quit
|
+---------------------------------------+ SQL>

若显示ERROR 信息,则表明配置错误。请检查上述配置是否正确。
常见问题处理

[UnixODBC][Driver Manager]Can't open lib 'xxx/xxx/psqlodbcw.so' : file not found.
此问题的可能原因:

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
96

odbcinst.ini 文件中配置的路径不正确
确认的方法:'ls'一下错误信息中的路径,以确保该psqlodbcw.so 文件存在,同时具有
执行权限。

psqlodbcw.so 的依赖库不存在,或者不在系统环境变量中
确认的办法:ldd 一下错误信息中的路径,如果是缺少libodbc.so.1 等UnixODBC 的库,
那么按照“操作步骤”中的方法重新配置UnixODBC,并确保它的安装路径下的lib 目录
添加到了LD_LIBRARY_PATH 中;如果是缺少其他库,请将ODBC 驱动包中的lib 目
录添加到LD_LIBRARY_PATH 中。

[UnixODBC]connect to server failed: no such file or directory
此问题可能的原因:

配置了错误的/不可达的数据库地址,或者端口
请检查数据源配置中的Servername 及Port 配置项。

服务器侦听不正确
如果确认Servername 及Port 配置正确,
请根据“操作步骤”中数据库服务器的相关配置,
确保数据库侦听了合适的网卡及端口。

防火墙及网闸设备

请确认防火墙设置,将数据库的通信端口添加到可信端口中。如果有网闸设备,请
确认一下相关的设置。

[unixODBC]The password-stored method is not supported.
此问题可能原因:
数据源中未配置sslmode 配置项。
解决办法:
请配置该选项至allow 或以上选项。此配置的更多信息,见表6-10。

Server common name "xxxx" does not match host name "xxxxx"
此问题的原因:使用了SSL 加密的“verify-full”选项,驱动程序会验证证书中的主机名
与实际部署数据库的主机名是否一致。
解决办法:碰到此问题可以使用“verify-ca”选项,不再校验主机名;或者重新生成一套
与数据库所在主机名相同的CA 证书。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
97

Driver's SQLAllocHandle on SQL_HANDLE_DBC failed
此问题的可能原因:可执行文件(比如UnixODBC 的isql,以下都以isql 为例)与数据
库驱动(psqlodbcw.so)依赖于不同的odbc 的库版本:libodbc.so.1 或者libodbc.so.2。此

题可以通过如下方式确认:
ldd `which isql` | grep odbc ldd psqlodbcw.so | grep odbc
这时,
如果输出的libodbc.so 最后的后缀数字不同或者指向不同的磁盘物理文件,

么基本就可以断定是此问题。
isql 与psqlodbcw.so 都会要求加载libodbc.so,
这时如果它们加
载的是不同的物理文件,便会导致两套完全同名的函数列表,同时出现在同一个可见域里
(UnixODBC 的libodbc.so.*的函数导出列表完全一致)
,产生冲突,
无法加载数据库驱动。
解决办法:
确定一个要使用的UnixODBC,
然后卸载另外一个
(比如卸载库版本号为.so.2
的UnixODBC),然后将剩下的.so.1 的库,新建一个同名但是后缀为.so.2 的软链接,便可
解决此问题。

FATAL: Forbid remote connection with trust method!
由于安全原因,数据库主节点禁止GBase 8c 内部其他节点无认证接入。
如果要在GBase 8c 内部访问数据库主节点,请将ODBC 程序部署在数据库主节点所在
机器,服务器地址使用"127.0.0.1"。建议业务系统单独部署在GBase 8c 外部,否则可能会影
响数据库运行性能。

[unixODBC][Driver Manager]Invalid attribute value
有可能是unixODBC 的版本并非推荐版本,建议通过“odbcinst --version”命令排查环境
中的unixODBC 版本。

authentication method 10 not supported.
使用开源客户端碰到此问题,可能原因:
数据库中存储的口令校验只存储了SHA256 格式哈希,
而开源客户端只识别MD5 校验,
双方校验方法不匹配报错。

数据库并不存储用户口令,只存储用户口令的哈希码。

数据库当用户更新用户口令或者新建用户时,
会同时存储两种格式的哈希码,
这时
将兼容开源的认证协议。

但是当老版本升级到新版本时,
由于哈希的不可逆性,
所以数据库无法还原用户口

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
98
令,进而生成新格式的哈希,所以仍然只保留了SHA256 格式的哈希,导致仍然
无法使用MD5 做口令认证。

MD5 加密算法安全性低,存在安全风险,建议使用更安全的加密算法。

要解决该问题,可以更新用户口令(参见《GBase 8c V5_3.0.0_SQL 手册》ALTER
USER 章节);或者新建一个用户(参见《GBase 8c V5_3.0.0_SQL 手册》CREATE
USER 章节),赋于同等权限,使用新用户连接数据库。

unsupported frontend protocol 3.51: server supports 1.0 to 3.0
目标数据库版本过低,
或者目标数据库为开源数据库。
请使用对应版本的数据库驱动连
接目标数据库。

FATAL: GSS authentication method is not allowed because XXXX user password is not
disabled.
目标数据库主节点的pg_hba.conf 里配置了当前客户端IP 使用"gss"方式来做认证,该
认证算法不支持用作客户端的身份认证,请修改到"sha256"后再试。配置方法见步骤8。

关闭SELINUX
SELINUX 提供了强制访问控制功能。为了GBase 8c 的正常运行,需要关闭所有节点
服务器的SELINUX。
(1)
查看SELINUX 状态,确认是否处于关闭状态。
[gbase@gbase8c ~]$ sestatus
如果系统提示以下信息,说明selinux 已被禁用:
SELinux status:
disabled

GBase 8c V5 安装部署手册(主备式)
南大通用数据技术股份有限公司
11
(2)
如SELINUX 处于可用状态,打开配置文件,将SELINUX 参数设置为disabled。
执行以下命令,打开SELINUX 配置文件。
[gbase@gbase8c ~]$ sudo vim /etc/selinux/config
按键“i”进入编辑模式,在打开文件如下位置,设置SELINUX=disabled:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#
enforcing - SELinux security policy is enforced.
#
permissive - SELinux prints warnings instead of enforcing.
#
disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#
targeted - Targeted processes are protected,
#
minimum - Modification of targeted policy. Only selected processes are
protected.
#
mls - Multi Level Security protection.
SELINUXTYPE=targeted
按键“:wq!”保存并退出。
(3)
重启服务器生效。