相关推荐recommended
解决:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
作者:mmseoamin日期:2023-12-14

问题分析步骤一:

(刚开始出现问题时,习惯性直接搜索第一行的错误信息,导致走了好多弯路)

解决:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure,第1张

报错信息:

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

最后一个成功发送到服务器的数据包是0毫秒前。驱动程序尚未从服务器接收到任何数据包。

解答:如果出现以上问题(问题分析步骤一),则可使用数据库连接工具进行测试,查看连接是否正常,如正常则请看步骤二。如不正常可以查看数据库的wait_timeout的值以判断是否正常。

问题分析步骤二:

(在报错信息中发现了一个特殊内容,SSL对等错误关闭,至此怀疑是SSL导致的)

解决:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure,第2张

报错信息:

Caused by: java.io.EOFException: SSL peer shut down incorrectly

原因:java.io.EOFException:SSL对等端错误关闭

 最终通过在连接串增加了 useSSL=false ,完美解决:

原连接串

url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8

修改后连接串

url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&useSSL=false