我使用hibernate (Hibernate Maven 5.2.15.Final,mysql -连接器Maven 8.0.9-rc),在linux上的lampp环境中使用mysql 5.7。
我在意大利(中欧夏季时间),一次3月25日,在连接db上发生跟随错误:
服务器时区值“CEST”无法识别或表示多个时区。如果要利用时区支持,必须配置服务器或JDBC驱动程序(通过serverTimezone配置属性)以使用更特定的时区值。
在mysql控制台上,我运行了:
SHOW GLOBAL VARIABLES LIKE 'time_zone';
SET GLOBAL time_zone='Europe/Rome'; 但这种情况并没有持续下去。
然后我添加到my.cnf文件中(in /etc/mysql):
[mysqld]
default-time-zone = 'Europe/Rome' 还包括:
default_time_zone = 'Europe/Rome' 但数据库服务器还没有启动..。
为什么会发生错误?有人能帮我吗?
谢谢!
发布于 2018-07-24 08:41:16
@aiman的答案是不正确的,因为在您的示例中,有效的服务器时区是,而不是 UTC。
您将在网络上找到一些解决方案,包括jdbc连接字符串上的其他参数,但在某些情况下,您不能更改此字符串。
我就是这样修好的:
首先在mysql中导入系统时区:
$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql然后将/etc/mysql/my.cnf的/etc/mysql/my.cnf部分(或最近的Debian/Ubuntu发行版上的/etc/mysql/mysql.conf.d/mysqld.cnf部分)中的默认mysql服务器时区设置为实际的服务器时区,例如:
default_time_zone = Europe/Paris别忘了重新启动mysql
$ sudo service mysql restart(或根据发行版的不同选择适当的命令)。
发布于 2020-09-21 07:34:21
如果问题是在连接到db时,我在this answer的注释中找到了解决方案。
在您的连接中,url使用以下内容:
String url = "jdbc:mysql://localhost/mydb?serverTimezone=Europe/Rome";这样我就可以连接到欧洲/阿姆斯特丹的天桥和时区了。
发布于 2018-05-06 15:40:05
首先请参阅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。
尽情享受
https://stackoverflow.com/questions/49518683
复制相似问题