用IDEA使用Springboot 连接数据库失败的解决方案
此次项目使用Maven搭建Springboot集成的SSM框架(Spring+SpringMVC+Mybatis)
使用的数据库为Mysql。
发现问题
实现登录功能时核对验证码正确后,用户输入用户名和密码与数据库核对时无反应。
打开谷歌浏览器控制台,发现Unchecked runtime.错误和POST url 500 错误
分析问题
先解决Unchecked runtime错误。谷歌浏览器打开chrome://extensions/关闭扩展插件即可。
重新测试登录功能Unchecked runtime错误解决,POST url 500 错误 仍在。
查看IDEA Console报错消息
不能建立JDBC连接,无法加载’caching_sha2_password’
mysql 8.0 默认使用 caching_sha2_password 身份验证机制 —— 从原来的 mysql_native_password 更改为 caching_sha2_password。
从 5.7 升级 8.0 版本的不会改变现有用户的身份验证方法,但新用户会默认使用新的 caching_sha2_password 。
我的mysql版本是8.0.15。如何查询mysql版本:
如有MySQLWorkbench 菜单栏选择About MySQL Workbench
命令行也能查
mysql -uroot -p
而pom.xml的Mysql连接驱动的版本是5.1.39:
故问题原因是因为配置文件中MySQL连接驱动与本机MySQL版本不一致导致连接失败。
解决方案
将版本< version >修改为本机mysql版本:
之后maven自动添加依赖(保持网络畅通),如没有自动添加,则右键pom.xml–>maven–>Reimport
检查项目结构里是否成功添加新版本的包:
File–>Project Structure–>Libraries
成功添加!
最终结果
测试
输入正确用户名密码后返回登录成功!
但是IDEA Console里有红字:
检查JDBC驱动类:
原因是新的驱动程序类是“com.mysql.cj.jdbc.Driver”,旧的“com.mysql.jdbc.Driver”已被弃用。
但是驱动程序是通过SPI自动注册的,通常不需要手动加载驱动程序类。所以删除或者修改新驱动类均可。
至此,问题已经完美解决!
但是如果项目涉及到git版本控制工具,记得commit时取消勾选刚刚修改的配置文件部分push,否则同事会因你修改了版本而无法使用!
欢迎批评指正?