zoukankan      html  css  js  c++  java
  • The server time zone value 'EDT' is unrecognized or represents more than one time zone.

    The server time zone value 'EDT' is unrecognized or represents more than one time zone.

    由于数据库和系统时区差异所造成的


    首先想到的是看看连接数据库的url有没有问题:jdbc:mysql://xxx:3306/dbname?useUnicode=true&characterEncoding=utf-8

    解决方案:
        在jdbc连接的url后面加上serverTimezone=GMT即可解决问题,如果需要使用gmt+8时区,需要写成GMT%2B8,否则会被解析为空。再一个解决办法就是使用低版本的MySQL jdbc驱动,5.1.28不会存在时区的问题。

    例如:
    url=jdbc:mysql://localhost:3306/bbs?useUnicode=true$characterEncoding=utf8

    改为

    url=jdbc:mysql://localhost:3306/bbs?serverTimezone=UTC
     

    没问题,而且在开发环境url是可以正常使用的。

    在网上查了一些资料说是可能数据库时间与数据库所在服务器时间不一致导致,但是看了下两者时间是一致的,问题一直没有解决,可以确定的是跟数据库所在服务器的时区有关,最后顺这个思路去查找相关更换服务器时区的资料。

    最后比较开发环境与测试环境的数据库服务器时区,发现开发环境是CST,测试环境是EDT:

    服务器上直接数据date命令就可以看到时区,数据库里我们是在navicate中使用show variables like '%time_zone%'查看数据库时区。

    于是更换测试环境时区:首先cat /etc/sysconfig/clock文件,发现这是美国时间,根据注释发现在/etc/localtime文件是定义时区的文件,备份并删除/etc/locatime文件,然后根据网上资料找到/usr/share/zoneinfo/发现这里都是各个时区的文件,复制上海时区文件到/etc/下并重命名为localtime:

    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

    使用date查看时间发现时区变为CST,使用date -R查看系统时间,Thu,27 Sep 2018 08:48:24 +0800(说明是东八区,中国时区即为东八区)

    然后重启MySQL服务:service mysqld restart,发现项目服务可以正常启动,问题解决!

  • 相关阅读:
    python学习笔记(1)
    一些有趣的使用function
    axios构建请求池处理全局loading状态&&axios避免重复请求
    axios构建缓存池存储基础数据
    文件下载方法
    关于 JS this
    前端 JS 获取 Image 图像 宽高 尺寸
    Html CSS transform matrix3d 3D转场特效
    Github 持续化集成 工作流 Npm包自动化发布
    远程 Linux(Ubuntu 18)添加字体
  • 原文地址:https://www.cnblogs.com/future-wy/p/10609366.html
Copyright © 2011-2022 走看看