MySQL建立JDBC鏈接時區問題

報錯內容mysql

ErrorCode=0 
SQLState=01S00 
The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

 

報錯緣由:linux

在使用mysql的jdbc驅動最新版(6.0+)時,遇到數據庫和系統時區差別引發的問題。sql

 

解決方法0-使用6.0如下版本的jdbc:數據庫

降版本,並不推薦;json

 

解決方法1-在jdbc url指定默認時區:服務器

還有一種是在jdbc鏈接的url後面加上serverTimezone=UTC或GMT便可,若是指定使用gmt+8時區,須要寫成GMT%2B8,不然可能報解析爲空的錯誤。示例以下:session

jdbc.url=jdbc:mysql://localhost:3306/demo?serverTimezone=UTC

 

解決方法2-在數據庫配置中添加默認時區:url

方法1(該方法本人未實驗成功):在my.cnf(linux)或者my.ini(win)配置文件[mysqld]底下添加: default-time-zone = '+8:00' 而後重啓數據庫服務器便可。code

方法2:SQL語句配置全局時區server

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | SYSTEM |
+------------------+--------+
2 rows in set, 1 warning (0.00 sec)

#設置當前session時區,即時生效,但僅做用於當前session
mysql> set time_zone='+8:00';
Query OK, 0 rows affected (0.00 sec)

#設置全局時區,即時生效,做用於全部session
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 |        |
| time_zone        | +08:00 |
+------------------+--------+
2 rows in set, 1 warning (0.00 sec)
相關文章
相關標籤/搜索