查看時區:
mysql> show variables like '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | CST | | time_zone | SYSTEM | +------------------+--------+ 2 rows in set (0.02 sec)
查看當前時間也正常:
mysql> select now(); +---------------------+ | now() | +---------------------+ | 2016-12-27 22:29:59 | +---------------------+ 1 row in set (0.00 sec)
但是java寫入是就少14小時。這是因為:在解析成預編譯語句的時候,誤將CST(China Standard Time utc+8)解析成CST(Central Standard Tim UTC-6),美國中部標准時間,所以少14個小時。
兩種解決辦法:
1. 命令修改(重啟mysql后失效)
mysql> set GLOBAL time_zone = '+8:00'; Query OK, 0 rows affected (0.00 sec) mysql> show variables like '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | CST | | time_zone | +08:00 | +------------------+--------+ 2 rows in set (0.04 sec)
2. 修改配置文件my.cnf(在/etc/my.cnf或者/etc/mysql/my.cnf)
在 [mysqld] 之下添加
default-time-zone=timezone
來修改時區。如東八區:
default-time-zone = '+8:00'
重啟mysql:
$ service mysql start