serverTimezone问题
最近开发时碰到了个问题,一个添加数据的请求,把当前时间存储到数据库,却存储的是昨天的时间,第一感觉是时区问题。检查过数据库的时区和机器的时区,没有问题,这就很奇怪了,同一个数据库,以前的项目也没有这个问题啊。然后上网查,说是在jdbc连接上加上serverTimezone=GMT%2B8
参数可以解决问题,加上后果然可以了。
但是为什么呢?数据库并没有变化啊!网上搜索serverTimezone
关键字,说是mysql驱动6.0之后需要设置这个参数。见此,打开 官网 查证下,官网上只有5.1版本和8.0版本,没有看到其他版本。找到了一段关于serverTimezone
的描述:
Some tests in the testsuite failed as they could not recognize system time zone values like CEST or WEST, even with the connection property serverTimezone set. This was because the value of serverTimezone in the testsuite URLs, after being processed by the testsuite, was not actually propagated as a connection property to Connector/J. This fix makes sure the property is in the actual URLs passed to Connector/J. (Bug #21774249)
凭借渣渣英语和翻译,看他意思大概是,测试时设置时区发现有问题,所以加了个参数来设置时区,这个字段默认是UTC
,我们是东8区,所以需要指定时区。
知道原因了,检查下代码,发现以前用的mysql驱动是5.0,现在新项目,用的是8.0,嗯,就是这个问题了。