MySQL的时区问题
一、问题起源
-
在使用swagger2进行代码测试时,执行完成后显示的时间与国内时间少了8个小时
-
强迫症的原因,就手贱了如下操作
① 修改MySQL内的时间
set global time_zone = '+8:00'; flush privileges;
② show variables like “%time_zone%”;
③ 修改springboot项目中的application.properties,将MySQL的连接中的serverTimezone
# mysql数据库连接 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://192.168.227.102:3306/glkt_vod?haracterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false spring.datasource.username=root spring.datasource.password=******
-
修改后的情况
swagger2中的测试后的时间没有变化,测试也算正常,就不了了之了
-
但是:在前后端测试,
进行修改功能测试时,出现了无法修改数据库中数据的情况。
进行了很多问题查询,包括加入注解@Transactional等等,都是一头雾水,不知道具体问题在哪
后来一行行的查看错误日志,才发现报错是由TimeZone报错引起的
二、解决方式
-
将application.properties中的数据库连接更改为serverTimezone=UTC
spring.datasource.url=jdbc:mysql://192.168.227.102:3306/glkt_vod?haracterEncoding=utf-8&serverTimezone=UTC&useSSL=false
-
在MySQL数据库中修改时区
set global time_zone = 'SYSTEM';
-
ok,问题解决,前后端数据交互恢复正常