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,发现项目服务可以正常启动,问题解决!

  • 相关阅读:
    zindex在IE中的迷惑(一)
    IE “+” CSS Hack研究
    display:inlineblock的深入理解
    CSS解决未知高度垂直居中
    zindex在IE中的迷惑(二)
    三角的一个特殊做法
    图片垂直居中的使用技巧
    简单form标准化实例(一):整体布局
    简单form标准化实例(二):语义结构
    CSS定义通用透明效果
  • 原文地址:https://www.cnblogs.com/future-wy/p/10609366.html
Copyright © 2011-2022 走看看