吃猫的鱼℘
吃猫的鱼℘
发布于 2021-01-26 / 149 阅读
0

MySQL插入时间数据与系统时间差8小时

问题描述

还是工程实践2中遇到的。
先判断是数据库时区的问题,还是项目配置的问题。方法如下:

show VARIABLES like '%time_zone%';
select now();



通过Navicat执行上面的语句得出的结果显示,MySQL所使用的时区是系统时区,则应该是项目配置问题,而不是数据库时区问题。前端或者后端插入数据时,时间就会差8个小时,到这就可以确定是项目配置问题了。

解决方案

如果是数据库时区问题,可以通过下语句设置MySQL时区

set global time_zone = '+8:00'; -- 修改MySQL全局时区为北京时间,即我们所在的东8区
flush privileges; -- 立即生效

如果是项目配置问题,那就找到jdbc url修改一下,将其中serverTimezone的值改成Asia/Shanghai
例如spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mytest?allowPublicKeyRetrieval=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false。

补充

大多数教程里写的是serverTimezone=UTC,所以会有一部分人遇到这个坑。通常是萌新会遇到(没错就是我),毕竟教程嘛。