MySQL mysql-connector-java 操作数据库出现时间不一致问题。
发现问题。
通过 mysql-connector-java 操作数据库,如果插入了 new Date() 型的数据,会发现 MySQL 数据库中的数据和本地时间不一致的问题,(如图,row 1 为不加设置的情况,更改设置后正确情况为 row 2)仔细观察发现数据库中的数据总是比本地时间晚 8 个时间。刚好中国时区为东八区,很自然会想到是时区设置问题。
尝试解决。
因为本次 MySQL 是部署在 Linux 服务器上的。
先去 Linux 中看看时区。
- 使用
tzselect
命令设置时区。
$ tzselect
...
The following information has been given:
China
Beijing Time
Therefore TZ='Asia/Shanghai' will be used.
Local time is now: Mon Apr 20 01:23:51 CST 2020.
Universal Time is now: Sun Apr 19 17:23:51 UTC 2020.
Is the above information OK?
1) Yes
2) No
服务器端设置完毕。经测试通过 java 操作还是无效。
那么问题应该在 mysql-connector-java
。
设置连接参数。
jdbc.url=jdbc:mysql://192.168.142.141:3307/ssmbuild?characterEncoding=UTF8&
serverTimezone=Asia/Shanghai
查阅 MySQL 官方文档,url 连接参数中有一项:
- serverTimezone
Override detection/mapping of time zone. Used when time zone from server doesn’t map to Java time zone
Since version: 3.0.2
指定时区。
那么为什么又是 Asia/Shanghai
?
再来看看 MySQL 支持的时区。
[root@192 ~]# ll /usr/share/zoneinfo/
total 408
drwxr-xr-x. 2 root root 4096 Apr 20 01:36 Africa
drwxr-xr-x. 6 root root 8192 Apr 20 01:36 America
drwxr-xr-x. 2 root root 187 Apr 20 01:36 Antarctica
drwxr-xr-x. 2 root root 26 Apr 20 01:36 Arctic
drwxr-xr-x. 2 root root 4096 Apr 20 01:36 Asia
drwxr-xr-x. 2 root root 196 Apr 20 01:36 Atlantic
drwxr-xr-x. 2 root root 4096 Apr 20 01:36 Australia
drwxr-xr-x. 2 root root 59 Apr 20 01:36 Brazil
drwxr-xr-x. 2 root root 136 Apr 20 01:36 Canada
-rw-r--r--. 1 root root 2102 Sep 26 2019 CET
drwxr-xr-x. 2 root root 45 Apr 20 01:36 Chile
-rw-r--r--. 1 root root 2294 Sep 26 2019 CST6CDT
-rw-r--r--. 2 root root 2411 Sep 26 2019 Cuba
-rw-r--r--. 1 root root 1876 Sep 26 2019 EET
-rw-r--r--. 2 root root 1946 Sep 26 2019 Egypt
-rw-r--r--. 2 root root 3517 Sep 26 2019 Eire
-rw-r--r--. 1 root root 118 Sep 26 2019 EST
-rw-r--r--. 1 root root 2294 Sep 26 2019 EST5EDT
drwxr-xr-x. 2 root root 4096 Apr 20 01:36 Etc
drwxr-xr-x. 2 root root 4096 Apr 20 01:36 Europe
-rw-r--r--. 7 root root 3661 Sep 26 2019 GB
-rw-r--r--. 7 root root 3661 Sep 26 2019 GB-Eire
-rw-r--r--. 10 root root 118 Sep 26 2019 GMT
-rw-r--r--. 10 root root 118 Sep 26 2019 GMT0
-rw-r--r--. 10 root root 118 Sep 26 2019 GMT-0
-rw-r--r--. 10 root root 118 Sep 26 2019 GMT+0
-rw-r--r--. 10 root root 118 Sep 26 2019 Greenwich
-rw-r--r--. 2 root root 1217 Sep 26 2019 Hongkong
-rw-r--r--. 1 root root 119 Sep 26 2019 HST
-rw-r--r--. 2 root root 1174 Sep 26 2019 Iceland
drwxr-xr-x. 2 root root 176 Apr 20 01:36 Indian
-rw-r--r--. 2 root root 9776 Sep 26 2019 Iran
-rw-r--r--. 1 root root 4463 Feb 20 2019 iso3166.tab
-rw-r--r--. 3 root root 9037 Sep 26 2019 Israel
-rw-r--r--. 2 root root 481 Sep 26 2019 Jamaica
-rw-r--r--. 2 root root 292 Sep 26 2019 Japan
-rw-r--r--. 2 root root 309 Sep 26 2019 Kwajalein
-rw-r--r--. 1 root root 2892 Sep 11 2019 leapseconds
-rw-r--r--. 2 root root 641 Sep 26 2019 Libya
-rw-r--r--. 1 root root 2102 Sep 26 2019 MET
drwxr-xr-x. 2 root root 53 Apr 20 01:36 Mexico
-rw-r--r--. 1 root root 118 Sep 26 2019 MST
-rw-r--r--. 1 root root 2294 Sep 26 2019 MST7MDT
-rw-r--r--. 4 root root 2427 Sep 26 2019 Navajo
-rw-r--r--. 4 root root 2434 Sep 26 2019 NZ
-rw-r--r--. 2 root root 2047 Sep 26 2019 NZ-CHAT
drwxr-xr-x. 2 root root 4096 Apr 20 01:36 Pacific
-rw-r--r--. 2 root root 2679 Sep 26 2019 Poland
-rw-r--r--. 2 root root 3455 Sep 26 2019 Portugal
drwxr-xr-x. 18 root root 4096 Apr 20 01:36 posix
-rw-r--r--. 3 root root 3519 Sep 26 2019 posixrules
-rw-r--r--. 5 root root 528 Sep 26 2019 PRC
-rw-r--r--. 1 root root 2294 Sep 26 2019 PST8PDT
drwxr-xr-x. 18 root root 4096 Apr 20 01:36 right
-rw-r--r--. 2 root root 764 Sep 26 2019 ROC
-rw-r--r--. 2 root root 645 Sep 26 2019 ROK
-rw-r--r--. 2 root root 384 Sep 26 2019 Singapore
-rw-r--r--. 3 root root 1930 Sep 26 2019 Turkey
-rw-r--r--. 1 root root 111361 Sep 26 2019 tzdata.zi
-rw-r--r--. 8 root root 118 Sep 26 2019 UCT
-rw-r--r--. 8 root root 118 Sep 26 2019 Universal
drwxr-xr-x. 2 root root 216 Apr 20 01:36 US
-rw-r--r--. 8 root root 118 Sep 26 2019 UTC
-rw-r--r--. 1 root root 1873 Sep 26 2019 WET
-rw-r--r--. 2 root root 1518 Sep 26 2019 W-SU
-rw-r--r--. 1 root root 17938 Jun 23 2019 zone1970.tab
-rw-r--r--. 1 root root 19424 Jun 23 2019 zone.tab
-rw-r--r--. 8 root root 118 Sep 26 2019 Zulu
[root@192 Asia]# pwd
/usr/share/zoneinfo/Asia
[root@192 Asia]# ll
total 428
-rw-r--r--. 3 root root 159 Sep 26 2019 Aden
-rw-r--r--. 1 root root 1003 Sep 26 2019 Almaty
-rw-r--r--. 1 root root 8620 Sep 26 2019 Amman
-rw-r--r--. 1 root root 1194 Sep 26 2019 Anadyr
-rw-r--r--. 1 root root 989 Sep 26 2019 Aqtau
-rw-r--r--. 1 root root 1019 Sep 26 2019 Aqtobe
-rw-r--r--. 2 root root 623 Sep 26 2019 Ashgabat
-rw-r--r--. 2 root root 623 Sep 26 2019 Ashkhabad
-rw-r--r--. 1 root root 997 Sep 26 2019 Atyrau
-rw-r--r--. 1 root root 964 Sep 26 2019 Baghdad
-rw-r--r--. 2 root root 197 Sep 26 2019 Bahrain
-rw-r--r--. 1 root root 1241 Sep 26 2019 Baku
-rw-r--r--. 3 root root 180 Sep 26 2019 Bangkok
-rw-r--r--. 1 root root 1227 Sep 26 2019 Barnaul
-rw-r--r--. 1 root root 2149 Sep 26 2019 Beirut
-rw-r--r--. 1 root root 1017 Sep 26 2019 Bishkek
-rw-r--r--. 1 root root 201 Sep 26 2019 Brunei
-rw-r--r--. 2 root root 286 Sep 26 2019 Calcutta
-rw-r--r--. 1 root root 1229 Sep 26 2019 Chita
-rw-r--r--. 1 root root 963 Sep 26 2019 Choibalsan
-rw-r--r--. 5 root root 528 Sep 26 2019 Chongqing
-rw-r--r--. 5 root root 528 Sep 26 2019 Chungking
-rw-r--r--. 1 root root 373 Sep 26 2019 Colombo
-rw-r--r--. 2 root root 330 Sep 26 2019 Dacca
-rw-r--r--. 1 root root 2306 Sep 26 2019 Damascus
-rw-r--r--. 2 root root 330 Sep 26 2019 Dhaka
-rw-r--r--. 1 root root 225 Sep 26 2019 Dili
-rw-r--r--. 2 root root 159 Sep 26 2019 Dubai
-rw-r--r--. 1 root root 593 Sep 26 2019 Dushanbe
-rw-r--r--. 1 root root 2028 Sep 26 2019 Famagusta
-rw-r--r--. 1 root root 2325 Sep 26 2019 Gaza
-rw-r--r--. 5 root root 528 Sep 26 2019 Harbin
-rw-r--r--. 1 root root 2353 Sep 26 2019 Hebron
-rw-r--r--. 2 root root 361 Sep 26 2019 Ho_Chi_Minh
-rw-r--r--. 2 root root 1217 Sep 26 2019 Hong_Kong
-rw-r--r--. 1 root root 893 Sep 26 2019 Hovd
-rw-r--r--. 1 root root 1236 Sep 26 2019 Irkutsk
-rw-r--r--. 3 root root 1930 Sep 26 2019 Istanbul
-rw-r--r--. 1 root root 366 Sep 26 2019 Jakarta
-rw-r--r--. 1 root root 237 Sep 26 2019 Jayapura
-rw-r--r--. 3 root root 9037 Sep 26 2019 Jerusalem
-rw-r--r--. 1 root root 189 Sep 26 2019 Kabul
-rw-r--r--. 1 root root 1170 Sep 26 2019 Kamchatka
-rw-r--r--. 1 root root 403 Sep 26 2019 Karachi
-rw-r--r--. 2 root root 159 Sep 26 2019 Kashgar
-rw-r--r--. 2 root root 210 Sep 26 2019 Kathmandu
-rw-r--r--. 2 root root 210 Sep 26 2019 Katmandu
-rw-r--r--. 1 root root 1283 Sep 26 2019 Khandyga
-rw-r--r--. 2 root root 286 Sep 26 2019 Kolkata
-rw-r--r--. 1 root root 1215 Sep 26 2019 Krasnoyarsk
-rw-r--r--. 1 root root 384 Sep 26 2019 Kuala_Lumpur
-rw-r--r--. 1 root root 493 Sep 26 2019 Kuching
-rw-r--r--. 3 root root 159 Sep 26 2019 Kuwait
-rw-r--r--. 2 root root 1241 Sep 26 2019 Macao
-rw-r--r--. 2 root root 1241 Sep 26 2019 Macau
-rw-r--r--. 1 root root 1230 Sep 26 2019 Magadan
-rw-r--r--. 2 root root 274 Sep 26 2019 Makassar
-rw-r--r--. 1 root root 333 Sep 26 2019 Manila
-rw-r--r--. 2 root root 159 Sep 26 2019 Muscat
-rw-r--r--. 2 root root 2002 Sep 26 2019 Nicosia
-rw-r--r--. 1 root root 1169 Sep 26 2019 Novokuznetsk
-rw-r--r--. 1 root root 1227 Sep 26 2019 Novosibirsk
-rw-r--r--. 1 root root 1215 Sep 26 2019 Omsk
-rw-r--r--. 1 root root 1011 Sep 26 2019 Oral
-rw-r--r--. 3 root root 180 Sep 26 2019 Phnom_Penh
-rw-r--r--. 1 root root 381 Sep 26 2019 Pontianak
-rw-r--r--. 1 root root 253 Sep 26 2019 Pyongyang
-rw-r--r--. 2 root root 197 Sep 26 2019 Qatar
-rw-r--r--. 1 root root 1019 Sep 26 2019 Qostanay
-rw-r--r--. 1 root root 1049 Sep 26 2019 Qyzylorda
-rw-r--r--. 2 root root 257 Sep 26 2019 Rangoon
-rw-r--r--. 3 root root 159 Sep 26 2019 Riyadh
-rw-r--r--. 2 root root 361 Sep 26 2019 Saigon
-rw-r--r--. 1 root root 1206 Sep 26 2019 Sakhalin
-rw-r--r--. 1 root root 591 Sep 26 2019 Samarkand
-rw-r--r--. 2 root root 645 Sep 26 2019 Seoul
-rw-r--r--. 5 root root 528 Sep 26 2019 Shanghai
-rw-r--r--. 2 root root 384 Sep 26 2019 Singapore
-rw-r--r--. 1 root root 1216 Sep 26 2019 Srednekolymsk
-rw-r--r--. 2 root root 764 Sep 26 2019 Taipei
-rw-r--r--. 1 root root 607 Sep 26 2019 Tashkent
-rw-r--r--. 1 root root 1040 Sep 26 2019 Tbilisi
-rw-r--r--. 2 root root 9776 Sep 26 2019 Tehran
-rw-r--r--. 3 root root 9037 Sep 26 2019 Tel_Aviv
-rw-r--r--. 2 root root 201 Sep 26 2019 Thimbu
-rw-r--r--. 2 root root 201 Sep 26 2019 Thimphu
-rw-r--r--. 2 root root 292 Sep 26 2019 Tokyo
-rw-r--r--. 1 root root 1227 Sep 26 2019 Tomsk
-rw-r--r--. 2 root root 274 Sep 26 2019 Ujung_Pandang
-rw-r--r--. 2 root root 893 Sep 26 2019 Ulaanbaatar
-rw-r--r--. 2 root root 893 Sep 26 2019 Ulan_Bator
-rw-r--r--. 2 root root 159 Sep 26 2019 Urumqi
-rw-r--r--. 1 root root 1262 Sep 26 2019 Ust-Nera
-rw-r--r--. 3 root root 180 Sep 26 2019 Vientiane
-rw-r--r--. 1 root root 1216 Sep 26 2019 Vladivostok
-rw-r--r--. 1 root root 1215 Sep 26 2019 Yakutsk
-rw-r--r--. 2 root root 257 Sep 26 2019 Yangon
-rw-r--r--. 1 root root 1253 Sep 26 2019 Yekaterinburg
-rw-r--r--. 1 root root 1185 Sep 26 2019 Yerevan
在 /usr/share/zoneinfo/Asia/
目录下有时区列表。
eg. Shanghai,Chongqing。
所以。
所以我们可以在 url 中设置。
jdbc.url=jdbc:mysql://192.168.142.141:3307/ssmbuild?characterEncoding=UTF8&serverTimezone=Asia/Shanghai
或
jdbc.url=jdbc:mysql://192.168.142.141:3307/ssmbuild?characterEncoding=UTF8&serverTimezone=Asia/Chongqing