原因
mysql5.7默認時區使用SYSTEM,如果服務器時間為中國區(+08:00),那么mysql的system_time_zone變量為CST
而CST可能有以下四種解釋,在不通項目中可能出現不一致
美國中部時間 Central Standard Time (USA) UTC-05:00 / UTC-06:00
澳大利亞中部時間 Central Standard Time (Australia) UTC+09:30
中國標准時 China Standard Time UTC+08:00
古巴標准時 Cuba Standard Time UTC-04:00
在JAVA中CST為美國中部時間,夏令時為UTC-05:00,其他時間為UTC-06:00,與中國區相差13/14個小時;
在創建數據庫連接時會自動從數據庫獲取包括時區在內的配置信息,導致時區配置錯誤。
解決
- 在連接字符串中指定時區
jdbc:mysql://xxxx:3306/schema?serverTimezone=Asia/Shanghai
- 修改mysql配置,設置指定默認時區
default-time-zone=Asia/Shanghai
- 另:mysql默認日志時區為UTC,可通過以下配置改為系統時區
log-timestamps=system
