天天看點

在idea中SpringBoot2.4.1項目下,會預設使用mysql-connector-java-8.0.22驅動的錯誤原因

找到原因了:測試中将version跟dependency分開存放發現可以了,再仔細一對比,最後才發現是自己大意,是我錯了

本來應該是<version>5.1.32</version>而不是<scope>5.1.32</scope>  預設生成的runtime則是<scope>runtime</scope>

效果如下:

在idea中SpringBoot2.4.1項目下,會預設使用mysql-connector-java-8.0.22驅動的錯誤原因

---------------------------------------------------------------分界線----------------------------------------------------------------------------------------------

原來的牢騷内容如下:讓大家見笑了

經過實際測試,在idea中SpringBoot2.4.1下,會預設強制使用mysql-connector-java-8.0.22.jar 驅動。

不知道你們有沒有遇到過。反正我測試,我用的是mysql5.6.27版本,資料庫驅動一直用的mysql-connector-java-5.1.32,但是這次更新後建立springboot項目,預設勾選了mybatis,mysql,自動生成的pom中mysql依賴為

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
           

配置檔案為

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/itqs?allowMultiQueries=true
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
           

結果報錯。

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 specific time zone value if you want to utilize time zone support.

    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.22.jar:8.0.22]

    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.22.jar:8.0.22]

    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) ~[mysql-connector-java-8.0.22.jar:8.0.22]

    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) ~[mysql-connector-java-8.0.22.jar:8.0.22]

    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73) ~[mysql-connector-java-8.0.22.jar:8.0.22]

    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:76) ~[mysql-connector-java-8.0.22.jar:8.0.22]

這個我知道原因。是因為使用了最新的mysql8.x驅動要加時區參數才能正常work,于是我将pom改為5.1.32

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>5.1.32</scope>
        </dependency>
           

結果發現沒有任何用處,程式運作仍然報錯,除非我修改配置檔案為這樣才能正常工作(即修改連接配接url,妥協使用8.0.22驅動)

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/itqs?allowMultiQueries=true&serverTimezone=Asia/Shanghai
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
           

檢視Maven引用,顯示這個鳥樣

在idea中SpringBoot2.4.1項目下,會預設使用mysql-connector-java-8.0.22驅動的錯誤原因

言下之意也就是根本不讓你使用Mysql老驅動了。

最後的臨時解決辦法:

在Project Structure Modules中将Export中mysql8.0.22驅動強制手工删除,然後手工添加5.1.32,問題才解決。但是有一個注意事項:不能再修改pom檔案,一修改又會自動删除5.1.32驅動。重新換成8.0.22,真是活久見!

不過,mysql最新驅動8.0.22是可以相容5.x版本的資料庫的。是以,到底使用哪個驅動,看個人喜好

在idea中SpringBoot2.4.1項目下,會預設使用mysql-connector-java-8.0.22驅動的錯誤原因