返回首页

gbase数据、南大通用产品文档:GBase8s消息链接限制

更新日期:2024年09月11日

即使启用消息传输优化,GBase 8s ODBC 也不会链接 SQL 函数。
ODBC 不链接的 SQL 函数有:
l
SQLDisconnect
l
SQLConnect
l
SQLEndTran
l
SQLExecute(如果驱动程序使用 select 或调用过程返回结果,并且驱动程序使用
insert 游标指向批量插入)
l
SQLExtendedFetch
l
SQLFetch
l
SQLFetchScroll
l
SQLPrepare
当驱动程序接触到上表所列的函数时,它执行以下操作:
1.
只有当遇到需要数据库服务器响应的 SQL 语句时,会将消息队列刷新到数据库服
务器。
当驱动程序运行不需要网络流量的函数时,它不会刷新消息队列,例如
SQLAllocStmt。
2.
继续后续 SQL 语句的消息链接。

UDT field length was not set in UDTMetaData
应用程序通过调用 UDTMetaData.setFieldType() 指定了一个字符型、日期时间型或 interval
类型的字段,但是指定字段长度时失败。调用UDTMetaData.setFieldLength() 来设置字段长
度。

库字符集不同导致扩容后部分表主备分片不一
致问题
问题现象
集群从8 节点扩至16 节点,扩容后出现一个报错(主副分片不一致),可以正常
创建与原库一样的表,但在表中插入数据就会报主备分片不一致的报错
报错信息:
ERROR 1705(HY000):gcluster DML error (IP:5050)(GBA-02AD-0005)Failed to
query in gnode;
DETAIL: (GBA-01EX-700) Ggase general error: (gns_host:IP) source table and
destination
table
are
not
same:
src:
(
is_lookup:
0
nulls_mode:
0,internal_size :168,display_size 56 -- type 1, precision :224 scale: 0
is_lookup: 0, nulls_mode )
解决方法:
备份数据重新建库。
经查明问题出现在某一个库新建表将报错无法insert select,而在其它库正常,

终定为发现异常库的字符集在原集群节点和新集群节点的gn 层字符集不一样。
下图为扩容前该库的字符集为:gb18030

GBase 8a MPP Cluster 最佳实践
5 FAQ
文档版本(2022-02-11)
南大通用数据技术股份有限公司
159
下图为扩容后该库的字符集为:utf8
由于创建该库时特意指定为gb18030,
但是集群扩容后在新节点的gn 层默认为集群
的默认字符集UTF8,可以通过备份数据重建该库解决。
建议:扩容前先排查字符集一致情况,对不一致的库表提前备份处理。