概要:测试服务器迁移到虚拟机,所有服务重装后部署项目及服务,在启动服务时报错:
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,没问题,而且在开发环境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
,发现项目服务可以正常启动,问题解决!
本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为: 2020/05/15 07:24