1 现象和问题解决
研发在使用DM8 数据库得时候,发现一个非常诡异得现象,就是DML 操作后得数据不会立即更新,而是需要刷新几次后才会更新。
排除了代码和数据库方面得原因后,最终将问题定位到了达梦得JDBC 驱动上。
研发使用了8.1.1.193 得驱动
maven依赖配置示例:
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver18</artifactId>
<version>8.1.1.193</version>
</dependency>
这里得代码实际上达梦驱动目录里得readme文件内容。 研发就是看了这个示例后,特意找了个这个版本的JDBC 驱动,最终导致了我们开始说的DML 数据异常问题。
这里有一个大的背景: 就是Oracle 官方的JDBC 驱动对国产数据库支持并不友好,有些功能并不支持,所以达梦只能开发了自己的JDBC 驱动,在数据库的安装目录下:
[dave@www.cndba.cn ~]# cd /data/dm/dmdbms/drivers/jdbc/
[dave@www.cndba.cn ~]# ll
total 3080
drwxr-xr-x 2 dmdba dinstall 4096 May 24 17:12 dialect
-rwxr-xr-x 1 dmdba dinstall 69832 May 24 17:12 dm8-oracle-jdbc16-wrapper.jar
-rwxr-xr-x 1 dmdba dinstall 1021888 May 24 17:12 DmJdbcDriver16.jar
-rwxr-xr-x 1 dmdba dinstall 1021196 May 24 17:12 DmJdbcDriver17.jar
-rwxr-xr-x 1 dmdba dinstall 1022178 May 24 17:12 DmJdbcDriver18.jar
-rwxr-xr-x 1 dmdba dinstall 3023 May 24 17:12 readme.txt
[dave@www.cndba.cn ~]#
正常情况下,我们使用这个版本的JDBC 驱动,不会有什么问题。 我们的环境因为研发使用了其他的版本,导致了异常,替换为正确的版本后,问题得到解决。
2 达梦JDBC 驱动版本说明
在达梦的DmJdbcDriver18.jar 驱动文件中,我们直接解压缩,然后查看MANIFEST.MF 文件中的内容,如下:
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.128 - Production
Driver-name: dm.jdbc.driver.DmDriver
Build-Time: 2022.07.14
Main-Class: dm.jdbc.driver.DmDriver
Premain-Class: dm.jdbc.stat.support.WebServer
Svn-Revision: 11496
这里可以看到我们JDBC 的版本:8.1.2.128
。
达梦的JDBC 驱动分奇数版本和偶数版本:
奇数:一般是测试版本。
偶数:对外发布的生产版本。
我们之前的问题,恰好使用了奇数版本,导致出现了问题。 所以对于生产环境,我们直接使用数据库安装目录下的驱动即可,无需单独从其他地方,不然反而容易出现一些异常情况。
版权声明:本文为博主原创文章,未经博主允许不得转载。