服务器时区值' CEST'无法识别

时间:2018-03-27 17:06:54

标签: mysql timezone lamp

我在linux上的lampp环境中使用hibernate(Hibernate Maven 5.2.15.Final,Mysql-connector Maven 8.0.9-rc)和mysql 5.7。

我在意大利(中欧夏令时间),并且在3月25日,连接db上出现以下错误:

  

服务器时区值' CEST'无法识别或代表更多   比一个时区。您必须配置服务器或JDBC   驱动程序(通过serverTimezone配置属性)使用更多   如果您想利用时区支持,请指定时区值。

在mysql控制台上,我跑了:

my.cnf

但这并没有持续下去。

然后我添加到[mysqld] default-time-zone = 'Europe/Rome' 文件(在/ etc / mysql中):

default_time_zone = 'Europe/Rome' 

还有:

com.facebook.android:facebook-login:4.28.0

但数据库服务器仍未启动...

为什么会出现错误? 有人能帮助我吗?

谢谢!

3 个答案:

答案 0 :(得分:11)

@aiman的答案不正确,因为在您的情况下,有效服务器时区是不是 UTC。

您会在网上找到一些解决方案,包括jdbc连接字符串上的其他参数,但是在某些情况下您无法更改此字符串。

这是我的固定方法:

首先在mysql中导入系统时区:

$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

然后在[mysqld](或最近的Debian / Ubuntu发行版的/etc/mysql/my.cnf)的/etc/mysql/mysql.conf.d/mysqld.cnf部分中将默认的mysql服务器时区设置为实际的服务器时区,例如:

default_time_zone = Europe/Paris

别忘了重启mysql

$ sudo service mysql restart

(或适当的命令,具体取决于您的发行版)。

答案 1 :(得分:5)

首先看看你的mysql服务器时区:
mysql -e "SELECT @@global.time_zone;" -u <mysqluser> -p
最有可能的是SYSTEM 找到您的系统时区:date +”%Z
看看它的CEST 您需要更改系统时区:

#cd /usr/share/zoneinfo
#ls -l
#rm /etc/localtime
#ln -s /usr/share/zoneinfo/UTC /etc/localtime

然后重启你的mysql服务器:/etc/init.d/mysqld restart

享受

答案 2 :(得分:2)

如果问题出在连接数据库时,我在this answer的NOTE中找到了解决方法。

在您的连接网址中使用以下内容:

String url = "jdbc:mysql://localhost/mydb?serverTimezone=Europe/Rome";

这对我来说可以与欧洲/阿姆斯特丹的时区和时区联系起来。