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小时的误差
网友评论