java访问MySQL,框架等排除,在将一条记录保存进入数据库的瞬间出现问题,具体描述如下:
生成一个对象,例如
MyObject myObject = new MyObject();
myObject.setName = "testName";
myObject.setTime = new Date();
此时system.out出来的myObject.getTime();都是正确的时间,但是一旦我保存进MySQL中就有可能变成8个小时以后的时间
比如我new Date()输出为1点,保存前打印这个时间还是1点,但是保存进MySQL后打开数据库看记录,变成9点了
而且最郁闷的是,这个变化无规律可言,有时没问题,有的时候会变掉,起码到现在为止还没找到规律。
MySQL已经set global time_zone = '+8:00'了
生成一个对象,例如
MyObject myObject = new MyObject();
myObject.setName = "testName";
myObject.setTime = new Date();
此时system.out出来的myObject.getTime();都是正确的时间,但是一旦我保存进MySQL中就有可能变成8个小时以后的时间
比如我new Date()输出为1点,保存前打印这个时间还是1点,但是保存进MySQL后打开数据库看记录,变成9点了
而且最郁闷的是,这个变化无规律可言,有时没问题,有的时候会变掉,起码到现在为止还没找到规律。
MySQL已经set global time_zone = '+8:00'了
再来作决定也不迟。
System.Properties.list(System.out)
好像有这么个函数,打出来瞅瞅。
我打出来了,后面没东西真的是这个原因么?
那我怎么让后面这个固定下来?另外,我在程序里面取时间的时候,显式地设置过了时区,然后再取时间,还是会有一样的问题出现。
打印出来正确,那应该是mysql的问题。
是system现在经过各种检查,JDK方面似乎也没问题,MySQL方面似乎也没问题,但是怎么两个何在一起就会出问题呢?继续等待大家帮忙
MySQL用的既然是system时区,那么就应该一致了
继续等待
找到一种说法是windows的某一个更新补丁将注册表里面的时区改成了0时区了,所以比我们这里时间少8个小时
我下了个用来恢复这个问题的注册表,貌似现在是好了,等待时间的验证
因为这个问题本身也不是一直发生的,等一段时间看看会不会发生。