在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.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引用,显示这个鸟样

言下之意也就是根本不让你使用Mysql老驱动了。

最后的临时解决办法:

在Project Structure Modules中将Export中mysql8.0.22驱动强制手工删除,然后手工添加5.1.32,问题才解决。但是有一个注意事项:不能再修改pom文件,一修改又会自动删除5.1.32驱动。重新换成8.0.22,真是活久见!

不过,mysql最新驱动8.0.22是可以兼容5.x版本的数据库的。所以,到底使用哪个驱动,看个人喜好

猜你喜欢

转载自blog.csdn.net/wh445306/article/details/112118188