zoukankan      html  css  js  c++  java
  • Communications link failure的解决办法

     

    使用Connector/J连接MySQL数据库,程序运行较长时间后就会报以下错误:

    Communications link failure,The last packet successfully received from the server was *** millisecond ago.The last packet successfully sent to the server was ***  millisecond ago。

    其中错误还会提示你修改wait_timeout或是使用Connector/J的autoReconnect属性避免该错误。

    后来查了一些资料,才发现遇到这个问题的人还真不少,大部分都是使用连接池方式时才会出现这个问题,短连接应该很难出现这个问题。这个问题的原因:

    mysql服务器默认的“wait_timeout”是28800秒即8小时,意味着如果一个连接的空闲时间超过8个小时,MySQL将自动断开该连接,而连接池却认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错。

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

    [mysqld]

    wait_timeout=31536000

    interactive_timeout=31536000

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

    ================================================================================

    从数据库方面解决org.hibernate.exception.JDBCConnectionException:could not execute query

    或者是报错:com.MySQL.jdbc.exceptions.jdbc4.CommunicationsException: Communicationslink failure

    http://blog.csdn.net/xingyunpi/article/details/7216016

    网站部署好之后是可以好好运行的,但是,总是隔一段时间就会报org.hibernate.exception.JDBCConnectionException:could not executequery错误,在网上查了一下说是因为mysql数据库默认连接时间的问题,mysql默认连接时间是8个小时,所以,一般如果访问不多的网站来说,如果隔8个小时没有与数据库的连接,那就会报这个错误.

    查了一些资料,有两大方向的解决方案吧:

    一. 修改数据库设置

    步骤一:进入数据库,看一下wait_timeout 的值:

    Show global variables like ‘wait_timeout’;

    28800秒就是8小时

    步骤二:修改wait_timeout的值:

    Set global  wait_timeout=1814400;

    看一下变了没有:

    步骤三:最后重启tomcat.

    这种方法有一个局限,那就是这样设置的话,总有一个时间限制.所以,最好使用下面的方法.

    二. 使用数据库连接池.

    这个方法还没有测试成功.但是这个应该是最好的解决方法.

  • 相关阅读:
    【今日CV 视觉论文速览】 19 Nov 2018
    【numpy求和】numpy.sum()求和
    【今日CV 视觉论文速览】16 Nov 2018
    【今日CV 视觉论文速览】15 Nov 2018
    poj 2454 Jersey Politics 随机化
    poj 3318 Matrix Multiplication 随机化算法
    hdu 3400 Line belt 三分法
    poj 3301 Texas Trip 三分法
    poj 2976 Dropping tests 0/1分数规划
    poj 3440 Coin Toss 概率问题
  • 原文地址:https://www.cnblogs.com/yycc/p/7403884.html
Copyright © 2011-2022 走看看