Java向MySQL新增记录时间误差14小时解决办法

2019-02-24更新:

下面解决方法中,执行SQL命令的方法,在MySQL重启以后,还是有14小时的误差,需要重新执行一遍SQL命令才能恢复。

问题描述:

在项目中,一个model的LocalDateTime类型的属性设置为LocalDateTime.now(),然后保存到数据库,如下:

task.setBeginTime(LocalDateTime.now());
taskRepository.save(task);

此次时间为2019-02-19 03:35:52,在数据库中却显示时间为2019-02-18 13:35:52,比当前时间迟了整整14个小时


解决方法:

查阅资料后发现,这是由于MySQL设置的时区不对,在MySQL中执行入下SQL:
show variables like '%time_zone%'
返回结果:


MySQL中system_time_zone的值为CST,因此,修改MySQL的时区设置即可,执行以下命令:
set global time_zone = '+8:00';
set time_zone = '+8:00';
flush privileges;
删除之前保存进去的记录,重新保存,结果恢复正常

另外还有一种处理办法:在 jdbc.url后面加serverTimezone=Asia/Shanghai,如

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/hera?serverTimezone=Asia/Shanghai

也可以消除14小时的误差

你可能感兴趣的:(Java向MySQL新增记录时间误差14小时解决办法)