Gbase8s数据库下,通过oracl模式进行JDBC操作执行Merge into 语句遇到的多种bug,请解惑
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【GBase版本】: GBase8sV8.8_AEE_3.3.0_2_36477d
【操作系统】:centos 7
【CPU】:4c16g
【问题描述】*: 业务场景为进行CDC数据同步,业务逻辑中引入对应版本Gbase8s的方言包,JDBC包;出现merger into语句的各种bug,以下一一描述:
1. 空表执行JDBC 插入,字段无法进行关联映射,我的测试仅使用基础的bigInt的id字段和char类型的字符串字段,主键无法映射,报错如下:推测应该是不加字段类型绑定无法有效映射

随后我修改id值的传值为String,此时程序执行成功,但是数据库数据完全不一致,截图如下:初步怀疑对于字符串进行了错误截断,

随后又有异常情况出现,当我再数据库存在主键值为1的数据的情况下,重新修改代码的id列为Long传值,继续出现主键列我无法映射,随后我修改100为1,插入成功,数据库又出现异常:字符串值转换异常


不清楚gbase-jdbc包中什么执行逻辑,查询过JDBC和SQL手册,该函数完全支持,Oracle模式也支持,数据库下去执行该sql也没有任何问题,此处仅举例最基础的两个字段,以上操作问题查询社区有人推荐使用 ?::BIGINT形式去转换,但是对于普通字段而言可以,FLOAT字段会出现精度丢失,另有其他字段会隐式转换出问题,以上不考虑性能的情况下,使用CASE(? as CHAR)函数进行转换,无隐式转换等问题,但是无法保证压测环境下性能损耗,并且例如 CAST(%s AS DECIMAL(20,4) ) 又出现强转换和绑定;
附 当前代码下我的驱动包信息(官网下载)、DDL语句
:
DDL:

希望能有技术工程师联系,是否有数据库版本影响或者其他因素
评论
热门帖子
- 12025-12-01浏览数:182762
- 22023-05-09浏览数:25056
- 42023-09-25浏览数:18525
- 52020-05-11浏览数:17528