启动 Spring 项目报错:java.sql.SQLException: The server time zone value 'Öйú±ê×¼ is unrecognized...
如题:启动 Spring 项目报错:java.sql.SQLException: The server time zone value 'Öйú±ê×¼' is unrecognized or represents more than one time zone
,数据库服务器时区出现乱码。
解决方法:
- 修改数据库的默认时区
以设置 MySQL 的时区为例,MySQL 默认的时区是 UTC 时区:
查看当前 MySQL 时区(登录到 MySQL 服务器):show variables like '%time_zone%';
修改当前 MySQL 时区:
(1)永久的修改:修改 MySQL 的配置文件,添加:default-time-zone='+08:00'
,重启 MySQL 生效
(2)临时的修改:执行 MySQL 命令 set global time_zone='+08:00'
,立即生效,重启 MySQL 后失效
- Spring 数据库连接 url 增加时区参数
?serverTimezone=GMT%2B8
表示当前服务器时区为东八区。
完整 url:jdbc:mysql://${MYSQL_HOST:localhost}:3306/db_example?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
尝试过使用 Asia/Shangha
,但启动报错:java.sql.SQLException: No timezone mapping entry for 'Asia/Shangha'
。
尝试过使用 UTC
,启动正常,但要考虑到 UTC 与东八区差了八个小时。