服务器时区值“CEST”无法识别

问题描述 投票:10回答:2

我在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控制台上,我跑了:

SHOW GLOBAL VARIABLES LIKE 'time_zone';
SET GLOBAL time_zone='Europe/Rome'; 

但那并没有持续下去。

然后我添加到my.cnf文件(在/ etc / mysql中):

[mysqld] 
default-time-zone = 'Europe/Rome' 

并且:

default_time_zone = 'Europe/Rome' 

但是db服务器还没有启动......

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

谢谢!

mysql timezone lamp
2个回答
13
投票

@ 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

(或根据您的发行版的相应命令)。


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

请享用

© www.soinside.com 2019 - 2024. All rights reserved.