1. 程式人生 > >解決MySQL報錯The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents .....

解決MySQL報錯The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents .....

1.前言 

今天在用SpringBoot2.0+MyBatis+MySQL搭建專案開發環境的時候啟動專案發現報了一個很奇怪的錯,報錯內容如下:

java.sql.SQLException: 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. at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:127) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:
61) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:71) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:76) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862) at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:444) at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:
230) at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1558) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1623) at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2468)

 


後來查閱資料發現這都是因為安裝mysql的時候時區設定的不正確 mysql預設的是美國的時區,而我們中國大陸要比他們遲8小時,採用+8:00格式

 

使用的資料庫是MySQL,從上面圖看出SpringBoot2.1在你沒有指定MySQL驅動版本的情況下它自動依賴的驅動是8.0.12很高的版本,這是由於資料庫和系統時區差異所造成的,在jdbc連線的url後面加上serverTimezone=GMT即可解決問題,如果需要使用gmt+8時區,需要寫成GMT%2B8,否則會被解析為空。再一個解決辦法就是使用低版本的MySQL jdbc驅動,5.1.28不會存在時區的問題。 

2.解決辦法 

 1.修改MySQL的配置檔案,MySQL配置檔案是my.ini檔案在你的安裝目錄下去找,我的是在C:\Program Files (x86)\MySQL\MySQL Server 5.5\my.ini

找到這個檔案之後用Notepad++開啟它,搜尋[mysqld]節點在節點下面加上下面這句話

default-time-zone='+08:00'


然後記得重啟MySQL的服務,開啟cmd視窗登入MySQL執行show variables like '%time_zone%';這句命令

 2.直接在mysql執行語句:

set global time_zone='+8:00'

 

 

注意:若是在ubuntu環境下,直接在my.cnf檔案中新增該行程式碼即可。