解决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';
本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/p/17994761