(附所有jar包的下载)com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException的解决办法

 

目录

 

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这个网站去下载,下载步骤同上

如果感觉文章不错,可以留下你的赞和评论呦!!!

 

### 解决服务器启动 jar 时出现的 MySQL 通信链接失败问题 当遇到 `com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure` 错误时,通常是因为应用程序无法成功建立或维持与 MySQL 数据库之间的连接。以下是几种有效的解决方法: #### 修改 JDBC URL 参数配置 调整 JDBC 连接字符串中的参数可以有效减少此类错误的发生频率。具体来说,在现有的 JDBC URL 中加入特定选项有助于增强稳定性。 ```java jdbc:mysql://10.36.192.253:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&initialTimeout=15 ``` 上述URL中含了多个重要属性来优化连接行为[^1]: - `autoReconnect=true`: 启用自动重连机制; - `failOverReadOnly=false`: 设置为只读模式下的故障转移策略; - `maxReconnects=10`: 定义最大尝试次数; - `initialTimeout=15`: 初始等待时间设为15秒; 这些设置能够帮助程序更好地应对网络波动带来的影响并提高恢复能力。 #### 调整 MySQL Server 的超时参数 为了防止因长时间无操作而导致的意外断线情况发生,可以在 MySQL 配置文件(`my.cnf`)内适当修改以下几个全局变量值: - `wait_timeout`: 控制交互式会话的最大空闲时限,默认情况下是非交互式的8小时; - `interactive_timeout`: 影响命令行工具等交互环境里的闲置期限; - `net_read_timeout`, `net_write_timeout`: 分别指定读写数据流过程中允许的最大停滞期; 通过延长以上几个计时器的时间长度,可降低由于短暂失联所引发的问题概率。 #### 关闭 SSL 加密验证 (如果适用) 对于某些内部部署场景而言,启用 SSL 可能反而增加了复杂度而不必要地提高了出错几率。因此建议先禁用此功能再观察效果变化: 将原有的 `useSSL=yes` 更改为 `useSSL=false` 并保存更改后的配置[^2]: ```properties url=jdbc:mysql://10.36.192.253:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8 ``` 完成所有必要的改动之后记得重启服务端口以及客户端应用以使新设定生效。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值