阅读 16 SEO

解决LocalDateTime.now()入数据库时间少8个小时

方式一:检查项目datasource的url配置项serverTimezone是否写了UTC,如果是的话要把serverTimezone=UTC换成serverTimezone=GMT%2B8

方式二:如果方式一换了也发现没用,然后项目持久层用的是JPA的话,检查是否加了该配置项 jpa.properties.hibernate.jdbc.time_zone: UTC,如果是的话,把该配置项删除。

方式三:datasource、持久层配置项检查无误,从数据库层面检查,如果是mysql的话,检查mysql的时区,可以用select now();查看当前数据库时间,如果少了8个小时,那就是数据库配置的问题了,mysql变量time_zone是数据库时间,time_zone默认是取变量system_time_zone系统时区,默认是为UTC,故我们要修改变量time_zone的值,修改mysql变量time_zone的值为+8:00,最后重启下项目,因为当前项目数据库连接池保留的session变量time_zone仍然为上一次的全局变量time_zone的值。

//查看当前数据库时间
select now();

//查看mysql变量%time_zone%
show variables like '%time_zone%';

// 查看全局变量time_zone和当前连接session变量time_zone
SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;

//设置全局变量time_zone和当前session变量time_zone
set global time_zone = '+8:00';
set time_zone='+8:00';

作者:dayue_

原文链接:https://www.jianshu.com/p/2d7fca119c47

文章分类
后端
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 gxwowoo@163.com 举报,一经查实,本站将立刻删除。
相关推荐