前言
最近在学习使用Java整合微信支付,一开始没注意,做了查询超时未支付的订单的定时任务以后,我新创建的订单立马就会被超时关闭,去看了一下数据库的订单信息,时间整整差了8小时,导致我写的逻辑直接被判断超时,我用的数据库是MySQL8.0哈。
然后我就去修改JDBC的链接信息,将时区参数修改成UTC,GMT都没效果。然后我就去根源,去MySQL数据库查看了一下时间,好家伙,数据库的时间直接就是少了8小时的。然后我把数据库的默认时区修改以后重启就好了
解决方案
代码语言:javascript复制我的MySQL8.0是直接安装在Docker里面在,所以直接修改了my.cnf [mysqld]全剧配置就好了,如下两种方案 方案二执行完以后记得重启MySQL服务器/容器
SELECT NOW(); // 查看当前数据库时间
SHOW VARIABLES LIKE '%time_zone%'; // 查看当前数据库连接使用的时区
SET GLOBAL TIME_ZONE = Asia/Shanghai // 设置全局时区为Asia/Shanghai
代码语言:javascript复制[mysqld]
user=mysql
default-time-zone = ' 8:00'