JDBC中的Communications link failure due to underlying exception错误

问题描述:使用JDBC连接Mysql数据库时,出现“Connection reset”错误,抛出如下异常:

Connection couldn't be established to jdbc:mysql://***/***?user=***&password=********
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

com.mysql.jdbc.CommunicationsException
MESSAGE: Communications link failure due to underlying exception:  ** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: Connection reset

STACKTRACE:java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)
at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)
at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1910)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3170)
at com.mysql.jdbc.Connection.configureClientCharacterSet(Connection.java:2436)
at com.mysql.jdbc.Connection.initializePropsFromServer(Connection.java:3913)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2683)
at com.mysql.jdbc.Connection.<init>(Connection.java:1531)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)

……** END NESTED EXCEPTION **

Last packet sent to the server was 203 ms ago.

STACKTRACE:

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **  java.net.SocketException
MESSAGE: Connection reset

STACKTRACE:

java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)
at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)
at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1910)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3170)
at com.mysql.jdbc.Connection.configureClientCharacterSet(Connection.java:2436)
at com.mysql.jdbc.Connection.initializePropsFromServer(Connection.java:3913)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2683)
at com.mysql.jdbc.Connection.<init>(Connection.java:1531)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
……

** END NESTED EXCEPTION **

问题分析:这个错误是Java程序没有连接上Mysql,导致无法进行任何与数据库相关的操作。这个错误的本质是一个网络的问题。

问题解决:首先,需要分别排查以下情况:
(1)MySql服务器是否支持TCP/IP连接;
(2)服务器端以及运行Java程序的客户端是否启用了防火墙;
(3)JDBC的驱动是否正确合适;
(4)是否启用了IPv6?如果现在使用的IPv6,那么换成IPv4再试试看;

如果上述情况都排除之后,还是出现如上的异常错误,那么很有可能是你电脑所处的网络存在问题,你可以尝试一下换个地方上网运行这个包含JDBC的Java程序,或者换个时间再次运行。

时间: 2024-09-23 02:22:28

JDBC中的Communications link failure due to underlying exception错误的相关文章

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 解决办法

09:00:30.307 [http-8080-6] ERROR org.hibernate.transaction.JDBCTransaction -JDBC begin failed com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 56,237,340 mi

ActiveMQ:Communications link failure问题以及解决办法

ActiveMQ版本:5.5.1 MQ 所使用的 MySQL 是 InnoDB存储引擎 记录人:@郑昀 现象: 业务表面现象:无.系统现象:无. 日志信息:业务系统发送 MQ 消息时,下面这种错误日志断断续续地一直都有: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure   The last packet successfully received from the serve

配置- hive Communications link failure

问题描述 hive Communications link failure 在hive链接mysql作为数据源的过程中,配置conf下的hive-site.xml 文件,hive是装在Hadoop集群的master上,ip地址是192.168.1.154.mysql直接使用的sudo apt-get install mysql-server 安装的.使用netstat -nat 显示: 结果如下:然后我的hive 配置文件是:把ip地址换成localhost或者127.0.0.1 hive下 s

Communications Link failure

这个错误是因为数据库设置的wait_timeout和interactive_timeout两个参数时间比较短引起的,解决方案一个是延长这两个参数,另一个方法就是修改数据库连接池testOnBorrow参数,改为true即可解决问题. Mark一下

mysql-&amp;amp;lt;SOS!!!&amp;amp;gt; Communications link failureons

问题描述 <SOS!!!> Communications link failureons 自己做的第一个信息类网站,第一次访问主页时能够正确显示,但过几分钟后刷新该页面是就会报错:错误类型如下:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 1649969 m

java-Communications link failure报错

问题描述 Communications link failure报错 The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 上网搜了,然后改了mysql的interactive_timeout,wait_timeout两个参数也重启了mysql为什么还是报同样的错误,非常郁闷!!!!!!!!!!

关于jdbc中插入和更新的问题

问题描述 关于jdbc中插入和更新的问题 我用的oracle用jdbc进行相关操作,可是,只有插入语句能执行,不能执行更新和删除语句,这是怎么回事呢? 解决方案 不能执行更新和删除语句,检查下代码有问题吗?运行时有没有异常信息呢?如果你用的是纯JDBC操作的话,问题就可能出在代码上,把代码的异常分支打印堆栈日子,检查更新删除操作有没有提交事务.事出必有因,仔细找找呗. 解决方案二: 那就是你的sq语句,出现问题了,和JDBC没有关系,既然你保存能进去,那就证明数据库连接成功,在好好检查一下. 解

jdbctemmple-在PLSQL中执行没问题,在JDBC中查询报列名无效

问题描述 在PLSQL中执行没问题,在JDBC中查询报列名无效 大家帮忙看看,这段SQL有什么问题,我在PLSQL中执行没问题,但是用JDBC查的时候就报列名无效的错误. select * from (select T_c_p_i.HOUSEHOLD_ID, T_c_p_i.HOUSEHOLD_HEAD_RELATIONSHIP, T_P_H_A.attribute_meaning as attribute_meaning, T_c_p_i.PERSON_NAME, T_c_p_i.GENDER

浅谈实际开发中数据源在JDBC中的应用

数据|数据源 数据源在JDBC中的应用众所周知,JDBC(Java数据库连接)是Java2企业版的重要组成部分.它是基于SQL层的API.通过把SQL语句嵌入JDBC接口的方法中,用户可以通过Java程序执行几乎所有的数据库操作. JDBC只提供了接口,具体的类的实现要求数据库的设计者完成.通过生成这些接口的实例,即使对于不同的数据库,Java程序也可以正确地执行SQL调用.所以对于程序员来说,不必把注意力放在如何向数据库发送SQL指令,因为程序员需要了解和用到的只是JDBC的接口,只有在极少数