目录
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException的解决办法
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException的解决办法
一、出现异常
在我们使用JDBC来连接MySQL数据库时,会出现下面的异常
Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client
二、解决方案
出现上面的异常是因为,MySQL版本和jar驱动包不兼容的导致的问题
方案一
由于我的jar包的版本是5.1.9的版本,然而MySQL是8.0的版本,可以将MySQL的版本调制到5.0的版本即可。
方案二
上面的方案来说比较麻烦要重新下载MySQL,所有我们可以将jar包的版本提升到8.0以后的版本即可
1.我们进入maven网站:http://mvnrepository.com
2.在搜索框搜索我们需要的jar包名,如搜索mysql-connection-java
3.点击第一个MySQL Connector/J
4.上面我们可以看到有很多的版本的jar包,我们可以根据自己的需求选择自己想要的版本,下面我以8.0.22为例进行下载
点击8.0.22,然后点击View All 进行下载即可
5.将原来的jar包更换成新下载的jar包
注意:
由于8.0版本的是较新的jar包,需要将驱动变换一下。
显示之前用的那个驱动类已经过时了,
需要将“com.mysql.jdbc.Driver”变成新的驱动类“com.mysql.cj.jdbc.Driver”:,
如果存在时区的问题,原来从JDBC6.0开始驱动类使用了新的,并且url中必须要设置时区,否侧会报错。需要将driver的url改成
jdbc_url=jdbc:mysql://localhost:3306/student?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false
7.总结
第一步:使用最新的MySQL驱动jar包。
第二步:把驱动的类名改为:static String driver="com.mysql.cj.jdbc.Driver";
第三步:在访问mysql的url后加入时区设置:
jdbc_url=jdbc:mysql://localhost:3306/student?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false
附:所有jar包都可以在http://mvnrepository.com这个网站去下载,下载步骤同上
如果感觉文章不错,可以留下你的赞和评论呦!!!