1、問題描述:
java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
--> 伺服器時區值“Öйú±ê×1/4ʱ1/4ä”無法識别或表示多個時區。
控制台對于問題描述的列印後續還有一句話:
如果要利用時區支援,則必須将伺服器或 JDBC 驅動程式(通過伺服器時區配置屬性)配置為使用更具體的時區值。
即mysql預設設定時區與目前系統時區不比對導緻的伺服器無法正常運作程式。
2、解決辦法
方法一:通過修改mysql下my.ini檔案配置資訊(一般存放于C:\Program Files (x86)\MySQL\MySQL Server 5.5\my.ini)
找到 [mysqld] 節點添加下面的語句(即如下圖,.txt格式無法修改,需要以管理者權限啟動獲得修改權限,我是用vscode打開并賦權的):
default-time-zone='+08:00'
方法二:打開MySQL 8.0 Command Line Client 執行語句(即mysql指令行用戶端)
#查詢mysql用戶端目前遵循的時區值
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)
注:方法一和方法二是直接修改資料庫配置;
方法三:在jdbc url指定預設時區
在jdbc連接配接的url後面加上serverTimezone=UTC或GMT即可,如果指定使用gmt+8時區,需要寫成GMT%2B8,否則可能報解析為空的錯誤。
jdbc.url=jdbc:mysql://localhost:3306/demo?serverTimezone=UTC&characterEncoding=utf-8
或
jdbc.url=jdbc:mysql://localhost:3306/demo?serverTimezone=GMT%2B8&characterEncoding=utf-8
或
jdbc.url=jdbc:mysql://localhost:3306/demo?serverTimezone=Asia/Shanghai&characterEncoding=utf-8
附:問題描述相關報錯