前言

在使用springBoot集成Mybatis时,遇到连接驱动错误,以此记录解决方法;

解决方法

启动程序,程序正常启动,未报错,但控制台显示错误信息,如下:
在这里插入图片描述
大致意思是:驱动程序是通过SPI自动注册的,而新的驱动程序类是com.mysql.cj.jdbc.Driver驱动程序,不能是com.mysql.jdbc.Driver,查看我的application.yml文件中的驱动用的是com.mysql.jdbc.Driver:
在这里插入图片描述
此时修改com.mysql.jdbc.Driver为com.mysql.cj.jdbc.Driver,项目重新启动,正常运行。
但在进行数据库sql操作时,发现报错,主要报错为:java.sql.SQLNonTransientConnectionException:Could not create connection to database server. Attempted reconnect 3 times. Giving up. 如下:
在这里插入图片描述
查看控制台信息,发现mysql驱动包为mysql-connector-java-8.0.22.jar,但本地的mysql版本为5.1.25,点击pom.xml的mysql-connector-java,发现在不设置版本的情况下,默认使用的是8.0.22:
在这里插入图片描述
故将其版本修改为与本地数据库相对应版本
在这里插入图片描述
另外,需要注意的是,在将mysql版本改为5之后,application.yml文件中mysql的驱动需要改为com.mysql.jdbc.Driver,此时项目正常启动,此时测试sql操作时正常。
额外说明:mysql驱动com.mysql.cj.jdbc.Driver是mysql-connector-java 6 中的特性,版本大于6的时候才使用com.mysql.cj.jdbc.Driver,并且还需要在数据源后面添加一个时区:serverTimezone=UTC(或者为Asia/Shanghai),并且此参数不能为空。


总结

mysql驱动需要与连接的数据库版本相对应
(1)若数据库版本为5.x.x,则在配置文件中的驱动为:com.mysql.jdbc.Driver,并且查看xml文件中的mysql驱动依赖,改为相应版本即可;
(2)若数据库版本为8.x.x,则在配置文件中的驱动为:com.mysql.cj.jdbc.Driver,并且在url后面加上设置时区的参数serverTimezone=UTC(或者为Asia/Shanghai)
如:jdbc:mysql://localhost:3306/sboottest?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false&maxReconnect&serverTimezone=Asia/Shanghai ,同样,将xml文件中的mysql驱动依赖改为相应版本即可。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐