在我们的java(1.8)/ hibernate(4.3.2)/ mysql(5.6.29-76.2)应用程序中,我们使用的是mysql-connector-java 5.1.40 。 所有服务器(java,mysql)的时区都是UTC。 在应用程序中,我们将一些日期时间'2016-10-26 08:00:00 '插入到数据库中,它们被正确保存为'2016-10-26 08:00: 00 ”。 我们将mysql-connector-java升级到 6.0.4 后,会出现以下行为:在java代码中我们插入'2016-10-26 08:00:00 ' ,在数据库中我们得到'2016-10-26 13:00:00 ',当我们在java应用程序中选择这些值时,我们得到正确的'2016-10-26 08: 00:00 '价值。但是,之前保存的所有值都会转移到过去。
到目前为止,我们还不知道是什么导致了这种转变。有什么想法吗?
更新 在使用时区运行多个测试后,我注意到以下内容:
所有服务器(java,mysql)的时区都是UTC。 这是错误的,事实上它是BST(英国夏令时)
其他时区(CEST,UTC,GMT + 6,亚洲/阿拉木图,GMT-6等)工作正常,BST导致这些转变。所以,我即将得出结论,在mysql-connector中有一些与BST时区相关的错误。 作为一种解决方法 - 切换到其他一些时区。