我一开始用最新版本的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都存在上述问题。希望能尽快解决。
2条答案
按热度按时间vaj7vani1#
这个和druid应该没关系吧?
b5lpy0ml2#
我对数据库方面不熟,没有实际看过代码,看了您的回复后仔细读了一遍jdbctemplate源代码,ResultSet是mysql-connector-java实现的,返回的对象也跟Druid没关系,不过我使用了下面的方法来排除问题。
个人技术太渣,不明原因,所以还想请您尝试下,如果是mysql-connector-java的问题,您也可以向官方反馈