引言
相信有很多人遇到过这种困惑:设置了参数后但 MySQL 显示的时间仍然不一致,这是一个很经典的问题,同样也是高发问题,在此我将为遇到该问题的朋友解惑。
设置了 serverTimezone 参数后,MySQL 的时间仍然不一致,通常是由于以下几个原因之一:
1. 数据库服务器时区与客户端时区不一致
• 原因:serverTimezone 参数仅影响客户端与服务器通信时对时区的解析。如果数据库服务器本身的时区设置不正确,那么存储在数据库中的时间可能是错误的。
• 解决办法:检查 MySQL 服务器的时区设置,确保其配置正确:
SELECT @@global.time_zone, @@session.time_zone;
如果需要更改服务器时区:
SET GLOBAL time_zone = ‘Asia/Shanghai’;
SET time_zone = ‘Asia/Shanghai’;
2. JDBC 驱动配置问题
• 原因:JDBC 连接字符串中的 serverTimezone 必须与 MySQL 服务器的时区匹配。如果 serverTimezone 设置与服务器时区不符,时间可能会发生偏移。
• 解决办法:确认你的连接字符串是否正确设置了 serverTimezone 参数:
jdbc:mysql://<host>:<port>/<database>?serv