Fil*_*odb 13 mysql lamp timezone
我在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';
Run Code Online (Sandbox Code Playgroud)
但这并没有持续。
然后我添加到my.cnf文件(在/ etc / mysql中):
[mysqld]
default-time-zone = 'Europe/Rome'
Run Code Online (Sandbox Code Playgroud)
并且:
default_time_zone = 'Europe/Rome'
Run Code Online (Sandbox Code Playgroud)
但是数据库服务器仍然无法启动...
为什么会发生错误?有人可以帮我吗?
谢谢!
Cla*_*son 15
@aiman的答案不正确,因为在您的情况下,有效服务器时区不是 UTC。
您会在网上找到一些解决方案,其中包括jdbc连接字符串上的其他参数,但是有些情况下您无法更改此字符串。
这是我的解决方法:
首先在mysql中导入系统时区:
$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Run Code Online (Sandbox Code Playgroud)
然后在(或在最近的Debian / Ubuntu发行版中)的[mysqld]部分中将默认的mysql服务器时区设置为实际的服务器时区,例如:/etc/mysql/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf
default_time_zone = Europe/Paris
Run Code Online (Sandbox Code Playgroud)
并且不要忘记重启mysql
$ sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)
(或相应的命令,具体取决于您的发行版)。
Han*_*ers 10
如果问题出在连接到数据库时,我在这个答案的注释中找到了解决方案。
在您的连接 url 中使用以下内容:
String url = "jdbc:mysql://localhost/mydb?serverTimezone=Europe/Rome";
Run Code Online (Sandbox Code Playgroud)
这对我与欧洲/阿姆斯特丹的飞行路线和时区连接很有用。
首先查看您的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
Run Code Online (Sandbox Code Playgroud)
然后重新启动mysql服务器:/etc/init.d/mysqld restart。
请享用
| 归档时间: |
|
| 查看次数: |
16842 次 |
| 最近记录: |