注册
使用DmJdbc驱动自带的获取数据库小版本号方法报错问题记录
专栏/LeeWen的铺子/ 文章详情 /

使用DmJdbc驱动自带的获取数据库小版本号方法报错问题记录

LeeWen 2022/07/28 3393 1 2
摘要 DM V8 1-2-114版本使用DmJdbc驱动自带的获取数据库小版本号方法报错问题记录

环境说明

数据库版本:DM V8 --03134283890-20220518-160920-10045 Pack6(DM V8 1-2-114)
Dmjdbc驱动版本:2-114版本及之前

问题触发的前提条件

1、使用的数据库版本为DM V8 1-2-114及以后的版本(2022年2月及以后)
2、使用的DmJdbc驱动版本为DM V8 1-2-114及以前的版本
3、程序代码中使用了DmJdbc驱动自带的获取小版本号的方法(获取大版本号的方法正常)
以上三个条件全部满足才会出现该问题。

报错信息

Java.lang.NumberFormatException:For input string:””

20220728085809

原因分析

从报错信息来看,数值格式化时,由于获取到空字符串,导致报错。
相关方法为dm.jdbc.driver.DmdbDatabaseMetaData.do_getDatabaseMinorVersion、getDatabaseMinorVersion,该方法为Dmjdbc驱动自带的获取数据库小版本号的相关方法。通过反编译Dmjdbc驱动包查看相关方法,该方法通过SQL语句到数据库中查询相关版本号信息然后进行处理返回。

通过简单的验证发现在使用DM V8 --03134283890-20220518-160920-10045 Pack6即DM V8 1-2-114版本数据库时,使用2-114版本及之前版本带的DmJdbc驱动中的相关获取小版本的方法获取数据库小版本号信息会出现上面的报错。

具体的原因,应该是由于最新某个版本(2-114)开始数据库版本号信息命名规则发生变化,而对应版本自带的驱动未及时更新调整相关内置方法导致。该问题经过验证在最新DM V8 1-2-128版本的JDBC驱动中已解决。

解决办法

方法一、使用DM V8 1-2-114之后的版本驱动,比如03134283904-20220714-165042-20005 该版本(DM V8 1-2-128)。
方法二、更换数据库版本为DM V8 1-2-114之前的版本。
方法三、不使用DmJdbc驱动自带的方法获取数据库小版本号,自己在代码中来实现。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服