为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
DM Database Server 64 V8
DB Version: 0x7000c
【操作系统】:linux
【CPU】:8
【问题描述】*:
1、在使用java的dm_jdbc驱动链接数据库之后,查询了一张表中的number类型字段,该字段定义时的语句:xxx number;java类型接收使用的Long,mybatis mapper的xml配置jdbcTyp=“BIGINT”,表中数据存储了18位的整数,然后代码执行查询后的结果中一部分数据精度错误,例如:表中存储的数据为202211155000500001,结果查出来是202211155000500000,反正挺离谱,以上是现象
2、出现这个问题的背景:我们使用的驱动版本信息如下:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.6
Created-By: 1.8.0_65-b17 (Oracle Corporation)
Implementation-Vendor: DAMENG
Implementation-Title: Dameng JDBC driver classes for use with JDK1.8
Implementation-Version: - 8.1.1.49 - Production
Driver-name: dm.jdbc.driver.DmDriver
Build-Time: 2019-12-05
Main-Class: dm.jdbc.driver.DmDriver
Premain-Class: dm.jdbc.stat.support.WebServer
Svn-Revision: 1127
3、然后我同事换了一个版本,结果问题就没有了,这个版本信息如下:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.4
Created-By: 1.8.0_65-b17 (Oracle Corporation)
Implementation-Vendor: DAMENG
Implementation-Title: Dameng JDBC driver classes for use with JDK1.8
Implementation-Version: - 8.1.2.141 - Production
Driver-name: dm.jdbc.driver.DmDriver
Build-Time: 2022.07.26
Main-Class: dm.jdbc.driver.DmDriver
Premain-Class: dm.jdbc.stat.support.WebServer
Svn-Revision: 11496
4、所以这问题使我很困惑,想问是否是驱动包源码级别的原因?那么原因具体又是啥,麻烦有专家帮忙看下吧,谢谢
这种大概率是JDBC驱动与数据库版本不匹配的缘故。