JDBC連線報錯:java.sql.SQLException: The server time zone value ‘Öйú±ê׼ʱ¼ä‘ is unrecognized...解決方案
阿新 • • 發佈:2021-01-14
技術標籤:JavaBUG解決合集mysqljavajdbc資料庫mybatis
JDBC連線報錯:java.sql.SQLException: The server time zone value ‘Öйú±ê׼ʱ¼ä‘ is unrecognized…解決方案
先上解決方案
在JDBC連線的url中加上useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
最初我的url是這麼寫的
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8";
這時我在後面使用&加上後續的配置之後便可以用了。
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC" ;
問題解決!!!!
原因分析
那麼究竟是什麼原因導致的呢?查閱了許多博主的文章分析之後發現最根源的問題還是MySQL的時區和JDBC的驅動不相容(好傢伙,MySQL還有時區???)
這裡我用的版本是:
- MySQL 5.7版本
- JDBC驅動8.0.11版本
那麼是否是因為JDBC驅動版本太高了呢?
我換了之前使用的JDBC 5.1.7 版本,不報錯。(好傢伙,好一個向下相容)
也就是說,如果想要解決此類問題,那麼有兩種方法“
- 向上述方法一樣,通過配置來指定服務連線的時間。
- 一勞永逸的解決此類方法,原因就是MySQL在安裝的時候驅動時區預設是美國時間,北京時間比美國那邊晚了八小時,我們就修改掉我們MySQL的配置。找到MySQL配置檔案中的my.cnf,然後在mysqld下邊的配置中新增一行:default-time_zone = ‘+8:00’
這點要注意,如果我們將驅動改為GMT+8時區,那麼我們需要這麼寫:serverTimezone=GMT%2B8";