原文連接html
今天在用SpringBoot2.0+MyBatis+MySQL搭建項目開發環境的時候啓動項目發現報了一個很奇怪的錯,報錯內容以下:java
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
使用的數據庫是MySQL,從上面圖看出SpringBoot2.1在你沒有指定MySQL驅動版本的狀況下它自動依賴的驅動是8.0.12很高的版本,這是因爲數據庫和系統時區差別所形成的,在jdbc鏈接的url後面加上serverTimezone=GMT便可解決問題,若是須要使用gmt+8時區,須要寫成GMT%2B8,不然會被解析爲空。再一個解決辦法就是使用低版本的MySQL jdbc驅動,5.1.28不會存在時區的問題。 sql
1.修改MySQL的配置文件,MySQL配置文件是my.ini文件在你的安裝目錄下去找,個人是在C:\Program Files (x86)\MySQL\MySQL Server 5.5\my.ini數據庫
找到這個文件以後用Notepad++打開它,搜索[mysqld]節點在節點下面加上下面這句話ubuntu
default-time-zone='+08:00'app
而後記得重啓MySQL的服務,打開cmd窗口登陸MySQL執行show variables like '%time_zone%';這句命令ui
2.直接在mysql執行語句:url
set global time_zone='+8:00'
注意:如果在ubuntu環境下,直接在my.cnf文件中添加該行代碼便可。spa