在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版本的数据库的。所以,到底使用哪个驱动,看个人喜好
本文来自博客园,作者:IT情深,转载请注明原文链接:https://www.cnblogs.com/wh445306/p/16751726.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端