Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure具体错误信息Causedby:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:CommunicationslinkfailureThelastpacketsuccessfullyreceivedfromtheserverwas1,548,635,756,564millisecondsago….

大家好,又见面了,我是你们的朋友全栈君。

具体错误信息

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 1,548,635,756,564 milliseconds ago.  The last packet sent successfully to the server was 0 milliseconds ago.


1、一般是由于连接的Ip地址、用户名、密码有误

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

 

2、 特殊的情况

2.1、在JDBC URL中使用autoReconnect属性,实际测试时使用了autoReconnect=true&failOverReadOnly=false,网上所说的只对mysql 4之前的版本有效。

2.2、修改MySQL的参数,wait_timeout最大为31536000即1年,在my.cnf中加入:

[mysqld]

wait_timeout=31536000

interactive_timeout=31536000

重启生效,需要同时修改这两个参数


两种解决异常:“The last packet sent successfully to the server was 0 milliseconds ago. ”的办法

原因:由于数据库回收了连接,而系统的缓冲池不知道,继续使用被回收的连接所致的。

           第一种解决办法

         将mysql回收空闲连接的时间变长,mysql默认是8小时,可以在mysql目录下的my.ini中增加下面配置,将时间改为1天。

          [mysqld]

          wait_timeout=86400


           第二种解决办法

          可以通过配置,让缓冲池去测试连接是否被回收,如果被回收,则不继续使用,以dbcp为例

知识点:

          #SQL查询,用来验证从连接池取出的连接
          dbcp.validationQuery=SELECT 1
          #指明连接是否被空闲连接回收器(如果有)进行检验,如果检测失败,则连接将被从池中去除
          dbcp.testWhileIdle=true
          #在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位,一般比minEvictableIdleTimeMillis小
          dbcp.timeBetweenEvictionRunsMillis=300000
          #在每次空闲连接回收器线程(如果有)运行时检查的连接数量,最好和maxActive一致
         dbcp.numTestsPerEvictionRun=50
          #连接池中连接,在时间段内一直空闲,被逐出连接池的时间(1000*60*60),以毫秒为单位
          dbcp.minEvictableIdleTimeMillis=3600000
————————————————————————————-
<!– dataSourceNew start–>

    <bean id=”dataSourceNew” class=”org.apache.commons.dbcp.BasicDataSource”>
    <!– 设置JDBC驱动名称 –>
    <property name=”driverClassName” value=”${jdbc.driver}” />
    <!– 设置JDBC连接URL –>
    <property name=”url” value=”${jdbc.url.new}” />
    <!– 设置数据库用户名 –>
    <property name=”username” value=”${jdbc.username.new}” />
    <!– 设置数据库密码 –>
    <property name=”password” value=”${jdbc.password.new}” />
    <!– 设置连接池初始值 –>
    <property name=”initialSize” value=”5″ />
    <!– 设置连接池最大值 –>
    <property name=”maxActive” value=”8″ />
    <!– 设置连接池最小空闲值 –>
    <property name=”minIdle” value=”5″ />
    <!– 设置连接池最大空闲值 –>
    <property name=”maxIdle” value=”5″ />

        <property name=”validationQuery”>

        <value>SELECT 1</value>

        </property>

        <property name=”testWhileIdle”>

        <value>true</value>

        </property>

        <property name=”timeBetweenEvictionRunsMillis”>

        <value>300000</value>

        </property>

        <property name=”numTestsPerEvictionRun”>

        <value>8</value>

        </property>

        <property name=”minEvictableIdleTimeMillis”>

        <value>3600000</value>

        </property>

</bean>
————————————————————————————-

您的支持是我分享经验的动力

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152257.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • leetcode数组汇总_leetcode经典题

    leetcode数组汇总_leetcode经典题原题链接给定一个由整数数组 A 表示的环形数组 C,求 C 的非空子数组的最大可能和。在此处,环形数组意味着数组的末端将会与开头相连呈环状。(形式上,当0 <= i < A.length 时 C[i] = A[i],且当 i >= 0 时 C[i+A.length] = C[i])此外,子数组最多只能包含固定缓冲区 A 中的每个元素一次。(形式上,对于子数组 C[i], C[i+1], …, C[j],不存在 i <= k1, k2 <= j 其中 k1 % A.leng

    2022年8月8日
    7
  • Android 程序员等级要求

    Android 程序员等级要求很多Android开发者已经度过了初级、中级,如何成为一个Android高手呢?Android123就各个级别的程序员应该掌握哪些内容作为下面分类。  一、初级  1.拥有娴熟的Java基础,理解设计模式,比如OOP语言的工厂模式要懂得。   2.掌握AndroidUI控件、AndroidJava层API相关使用。   迈向中级,最好再次更新下Ja

    2022年6月14日
    39
  • java 异或加密_使用异或实现一个简单的加密或解密

    java 异或加密_使用异或实现一个简单的加密或解密/**Copyright(C)2017,MegatronKing**LicensedundertheApacheLicense,Version2.0(the”License”);youmaynotusethisfileexcept*incompliancewiththeLicense.YoumayobtainacopyoftheLicenseat**http://www.apache.org/licenses/.

    2022年10月4日
    3
  • Exchange 2007的部署

    Exchange 2007的部署

    2021年7月31日
    57
  • 设计模式之代理模式XXOO

    设计模式之代理模式XXOO定义代理模式可以分为两种,一种是静态代理,一种是动态代理。静态代理:代理类一般会持有一个被代理的对象引用,且对于不关心的方法全部委托给被代理的对象处理。自己处理关心的方法。这种代理方式是死板的,它不是在运行时动态创建,它就是硬编码,你代码编译前写的是什么,编译后就是什么。换句话就是你按下CTRL+S的那一刻,就会被代理对象生成一个不可动态改变的代理类。静态代理一般对于代理的对象是单个或者多个固定的类(数量不会太多)使用。效果会比动态代理要好。动态代理:动态代理又分为JDK动

    2022年7月17日
    13
  • 音视频传输基本知识[通俗易懂]

    音视频传输基本知识[通俗易懂]音视频传输时的基本步骤:1.发起会话(Sip协议)2.编码(硬件编码、软件编码)3.传输(RTP)4.解码(硬件解码、软件解码)5结束会话(Sip协议)视频格式视频格式可以分为适合本地播放的本地影像视频和适合在网络中播放的网络流媒体影像视频两大类。尽管后者在播放的稳定性和播放画面质量上可能没有前者优秀,但网络流媒体影像视频的广泛传播性使之正被广泛应用于视频点播、网络演示

    2022年10月3日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号