前言

最近在学习使用Java整合微信支付,一开始没注意,做了查询超时未支付的订单的定时任务以后,我新创建的订单立马就会被超时关闭,去看了一下数据库的订单信息,时间整整差了8小时,导致我写的逻辑直接被判断超时,我用的数据库是MySQL8.0哈。

然后我就去修改JDBC的链接信息,将时区参数修改成UTC,GMT都没效果。然后我就去根源,去MySQL数据库查看了一下时间,好家伙,数据库的时间直接就是少了8小时的。然后我把数据库的默认时区修改以后重启就好了

解决方案

我的MySQL8.0是直接安装在Docker里面在,所以直接修改了my.cnf [mysqld]全剧配置就好了,如下两种方案

方案二执行完以后记得重启MySQL服务器/容器

SELECT NOW();   // 查看当前数据库时间
SHOW VARIABLES LIKE '%time_zone%';  // 查看当前数据库连接使用的时区
SET GLOBAL TIME_ZONE = Asia/Shanghai   // 设置全局时区为Asia/Shanghai
[mysqld]
user=mysql
default-time-zone = '+8:00'
Last modification:October 3rd, 2022 at 07:34 pm
If you think my article is useful to you, please feel free to appreciate