jdbc 连接 mysq 之 serverTimezone 设定

mysql 返回的时间总是有问题,比实际时间要早 8 小时。检查是 jdbc 连接的 url 中配置的时区有问题,原先是


jdbc:mysql://172.xx.xx.xx:3306/test?useUnicode=true&characterEncoding=gbk&useSSL=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

尝试了 GMT、GMT8、UTC+8,UTC0800 等可能的参数均报错。后来在 mysql 文档中发现可用的时区都在 /usr/share/zoneinfo 目录下,ll 下发现可用的时区信息如下
lewis@lewis-dzwww:/usr/share/zoneinfo$ ll
总用量 308
drwxr-xr-x 21 root root 4096 5 月 27 12:54 ./
drwxr-xr-x 334 root root 12288 6 月 21 15:11 ../
drwxr-xr-x 2 root root 4096 5 月 27 12:56 Africa/
drwxr-xr-x 6 root root 4096 5 月 27 12:56 America/
drwxr-xr-x 2 root root 4096 5 月 27 12:56 Antarctica/
drwxr-xr-x 2 root root 4096 5 月 27 12:56 Arctic/
drwxr-xr-x 2 root root 4096 5 月 27 12:56 Asia/
drwxr-xr-x 2 root root 4096 5 月 27 12:56 Atlantic/
drwxr-xr-x 2 root root 4096 5 月 27 12:56 Australia/
drwxr-xr-x 2 root root 4096 5 月 27 12:56 Brazil/
drwxr-xr-x 2 root root 4096 5 月 27 12:56 Canada/
-rw-r--r-- 1 root root 2102 4 月 21 02:09 CET
drwxr-xr-x 2 root root 4096 5 月 27 12:56 Chile/
-rw-r--r-- 1 root root 2294 4 月 21 02:09 CST6CDT
-rw-r--r-- 1 root root 2437 4 月 21 02:09 Cuba
-rw-r--r-- 1 root root 1876 4 月 21 02:09 EET
-rw-r--r-- 1 root root 1972 4 月 21 02:09 Egypt
-rw-r--r-- 1 root root 3559 4 月 21 02:09 Eire
-rw-r--r-- 1 root root 127 4 月 21 02:09 EST
-rw-r--r-- 1 root root 2294 4 月 21 02:09 EST5EDT
drwxr-xr-x 2 root root 4096 5 月 27 12:56 Etc/
drwxr-xr-x 2 root root 4096 5 月 27 12:56 Europe/
-rw-r--r-- 1 root root 264 4 月 21 02:09 Factory
-rw-r--r-- 1 root root 3687 4 月 21 02:09 GB
lrwxrwxrwx 1 root root 2 5 月 27 09:07 GB-Eire -> GB
-rw-r--r-- 1 root root 127 4 月 21 02:09 GMT
lrwxrwxrwx 1 root root 3 5 月 27 09:07 GMT0 -> GMT
lrwxrwxrwx 1 root root 3 5 月 27 09:07 GMT-0 -> GMT
lrwxrwxrwx 1 root root 3 5 月 27 09:07 GMT+0 -> GMT
lrwxrwxrwx 1 root root 3 5 月 27 09:07 Greenwich -> GMT
-rw-r--r-- 1 root root 1189 4 月 21 02:09 Hongkong
-rw-r--r-- 1 root root 128 4 月 21 02:09 HST
-rw-r--r-- 1 root root 1190 4 月 21 02:09 Iceland
drwxr-xr-x 2 root root 4096 5 月 27 12:56 Indian/
-rw-r--r-- 1 root root 1678 4 月 21 02:09 Iran
-rw-r--r-- 1 root root 4475 2 月 24 17:01 iso3166.tab
-rw-r--r-- 1 root root 2265 4 月 21 02:09 Israel
-rw-r--r-- 1 root root 507 4 月 21 02:09 Jamaica
-rw-r--r-- 1 root root 355 4 月 21 02:09 Japan
-rw-r--r-- 1 root root 237 4 月 21 02:09 Kwajalein
-rw-r--r-- 1 root root 10384 2 月 22 23:58 leap-seconds.list
-rw-r--r-- 1 root root 655 4 月 21 02:09 Libya
lrwxrwxrwx 1 root root 14 5 月 27 09:07 localtime -> /etc/localtime
-rw-r--r-- 1 root root 2102 4 月 21 02:09 MET
drwxr-xr-x 2 root root 4096 5 月 27 12:56 Mexico/
-rw-r--r-- 1 root root 127 4 月 21 02:09 MST
-rw-r--r-- 1 root root 2294 4 月 21 02:09 MST7MDT
-rw-r--r-- 1 root root 2453 4 月 21 02:09 Navajo
-rw-r--r-- 1 root root 2460 4 月 21 02:09 NZ
-rw-r--r-- 1 root root 2057 4 月 21 02:09 NZ-CHAT
drwxr-xr-x 2 root root 4096 5 月 27 12:56 Pacific/
-rw-r--r-- 1 root root 2705 4 月 21 02:09 Poland
-rw-r--r-- 1 root root 3453 4 月 21 02:09 Portugal
drwxr-xr-x 19 root root 4096 5 月 27 12:56 posix/
-rw-r--r-- 1 root root 3545 4 月 21 02:09 posixrules
-rw-r--r-- 1 root root 414 4 月 21 02:09 PRC
-rw-r--r-- 1 root root 2294 4 月 21 02:09 PST8PDT
drwxr-xr-x 19 root root 4096 5 月 27 12:56 right/
-rw-r--r-- 1 root root 800 4 月 21 02:09 ROC
-rw-r--r-- 1 root root 571 4 月 21 02:09 ROK
-rw-r--r-- 1 root root 428 4 月 21 02:09 Singapore
drwxr-xr-x 2 root root 4096 5 月 27 12:56 SystemV/
-rw-r--r-- 1 root root 2747 4 月 21 02:09 Turkey
-rw-r--r-- 1 root root 127 4 月 21 02:09 UCT
lrwxrwxrwx 1 root root 4 5 月 27 09:07 Universal -> Zulu
drwxr-xr-x 2 root root 4096 5 月 27 12:56 US/
lrwxrwxrwx 1 root root 4 5 月 27 09:07 UTC -> Zulu
-rw-r--r-- 1 root root 1873 4 月 21 02:09 WET
-rw-r--r-- 1 root root 1528 4 月 21 02:09 W-SU
-rw-r--r-- 1 root root 17533 4 月 13 16:01 zone1970.tab
-rw-r--r-- 1 root root 19014 4 月 13 16:01 zone.tab
-rw-r--r-- 1 root root 127 4 月 21 02:09 Zulu
为解决此问题,可以选择东 8 区的 Hongkong、Asia/Shanghai 或者 Asia/Hongkong 作为参数,修改后 url 为


jdbc:mysql://172.xx.xx.xx:3306/test?useUnicode=true&characterEncoding=gbk&useSSL=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Hongkong

时间返回就没问题了


作者:喵主子
来源:CSDN
原文:https://blog.csdn.net/qq631431929/article/details/51731834
版权声明:本文为博主原创文章,转载请附上博文链接!