解决MySQL设置时区时的错误Unknown or incorrect time zone: 'Asia/Shanghai'

问题描述:

在trino中配置了mysql.properties文件,但是通过trino客户端,执行命令show schemas from mysql ;查看数据库信息时报错:Error listing schemas for catalog mysql: java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

 查看Trino的日志server.log,从中看到有报错:Unknown or incorrect time zone: 'Asia/Shanghai' 

问题原因:

MySQL默认时区格式是'+8:00'的格式,这个时区可以在my.ini中[mysqld]节点下设置

default-time-zone = '+8:00'

默认这个设置是没有的

但是MySQL不支持'Asia/Shanghai'这种时区格式

执行下面sql语句是报错的

SET GLOBAL time_zone = 'Asia/Shanghai'

解决方法:

https://dev.mysql.com/downloads/timezones.html下载时区文件,官网说适合8.0以上版本,但是我的MySQL版本为5.7。

 

解压后得到一个sql文件,查看下sql文件内容,可以看到里面清空了4张系统表,然后重新插入了数据。

 (1)由于表中执行了Truncate系统表的语句,如果生产环境担心出问题,可以将这四张表的数据导出备份。

      导出备份,这里省略。

(2)登录MySQL,执行sql文件。

mysql -u root -p密码
use mysql;
source timezone_posix.sql路径

(3)这时再设置时区,发现执行成功了。

SET GLOBAL time_zone = 'Asia/Shanghai';

 

 

posted @ 2024-01-29 16:08  业余砖家  阅读(726)  评论(1编辑  收藏  举报