• MySQL的时区引起的前后端数据交互不畅的问题解决


    MySQL的时区问题

    一、问题起源
    1. 在使用swagger2进行代码测试时,执行完成后显示的时间与国内时间少了8个小时

    2. 强迫症的原因,就手贱了如下操作

      ① 修改MySQL内的时间

      set global time_zone = '+8:00';
      flush privileges;
      
      • 1
      • 2

      ② 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=******
      
      • 1
      • 2
      • 3
      • 4
      • 5
    3. 修改后的情况

      swagger2中的测试后的时间没有变化,测试也算正常,就不了了之了

    4. 但是:在前后端测试,

      进行修改功能测试时,出现了无法修改数据库中数据的情况。

      进行了很多问题查询,包括加入注解@Transactional等等,都是一头雾水,不知道具体问题在哪

      后来一行行的查看错误日志,才发现报错是由TimeZone报错引起的

    二、解决方式
    1. 将application.properties中的数据库连接更改为serverTimezone=UTC

      spring.datasource.url=jdbc:mysql://192.168.227.102:3306/glkt_vod?haracterEncoding=utf-8&serverTimezone=UTC&useSSL=false
      
      • 1
    2. 在MySQL数据库中修改时区

      set global time_zone = 'SYSTEM';
      
      • 1

      在这里插入图片描述

    3. ok,问题解决,前后端数据交互恢复正常

  • 相关阅读:
    IPv6详解
    数据库笔记
    IDEA工具第一篇:细节使用-习惯设置
    footer页面布局
    kickstarter数据采集
    怎么找通达信行情接口c++源码?
    力扣labuladong——一刷day10
    【 java 多线程】创建多线程的方式四:使用线程池创建多线程
    SpringBoot集成Shiro安全框架
    JavaScript的闭包的详细讲解
  • 原文地址:https://blog.csdn.net/N_ZSX/article/details/128065245