druid Druid 1.0.29/26/25/版本中ResultSet获取数据有bug

slhcrj9b  于 2022-10-22  发布在  Druid
关注(0)|答案(2)|浏览(217)

我一开始用最新版本的Druid,但是在获取数据库时间的时候有问题。

从数据库读取数据,用统一的方法来执行:

{
        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
        int columnCount = resultSetMetaData.getColumnCount();
        for (int i = 1; i <= columnCount; i++) {
            String column = JdbcUtils.lookupColumnName(resultSetMetaData, i);
            Object value = JdbcUtils.getResultSetValue(resultSet, i);
}

但是在读取时间的时候,value有明显偏差,我在debug的时候,发现下面的情况:

也就是说,getValue()方法有时差错误,而且这个时差有13个小时,不知道如何产生的,而getString()方法则正确。
服务器是阿里云ECS,数据库是自己搭建的mysql 5.6,查看数据库时区是CST,追随系统。
本地系统windows 10 x64 CST。

在测试多个可选版本之后,发现29/26/25都存在上述问题。希望能尽快解决。

vaj7vani

vaj7vani1#

这个和druid应该没关系吧?

b5lpy0ml

b5lpy0ml2#

我对数据库方面不熟,没有实际看过代码,看了您的回复后仔细读了一遍jdbctemplate源代码,ResultSet是mysql-connector-java实现的,返回的对象也跟Druid没关系,不过我使用了下面的方法来排除问题。
  • 在pom.xml中依次降档使用mysql-connector-java,并且保持druid为最新版,但是debug的情况并没有改变;
  • 保持mysql-connect-java最新(6.0.4),依次降档使用druid,直到1.0.18版本才正确。

个人技术太渣,不明原因,所以还想请您尝试下,如果是mysql-connector-java的问题,您也可以向官方反馈

相关问题