zoukankan      html  css  js  c++  java
  • 导致“mysql has gone away”的两种情况

    导致“mysql has gone away”的两种情况

    By Cruise

        1.  wait_timeout参数

        在开发代理server时, 我使用了jdbc连接数据库,并采用长连接的方式连接数据库。开发完后的测试ok,但到了第二天测试时发现数据库操作失败,并抛出“mysql has gone away”的异常,主要原因是在mysql中有一个wait_timeout参数,默认设置为8个小时,当超过8个小时没有数据交互时,mysql服务器会主动关闭掉超时的连接,对应的mysql 错误码是2006。

        这个时候需要业务侧做相关的处理,当发现有这种异常时需要重新连接数据库。其实在使用wbl mysql库时,wbl已经为我们做了这些,代码如下:

            if (mysql_real_query(_Mysql, sql.c_str(), sql.length())) 

            {

                string err(sql.c_str(),0,128);

                 int ret_errno = mysql_errno(_Mysql);

                Close();

                 if (ret_errno == 2013 || ret_errno == 2006){ // CR_SERVER_LOST,重连一次

                Connect();

            }

        2. max_allowed_packet参数

        当查询接口每秒钟的请求到达60个以上时,发现日志中出现了大量的“mysql has gone away”,但这个时候的数据库连接是正常的,这个时候就和例外一个mysql参数有关。show variables like 'max_allowed_packet'查看了下,发现max_allowed_packet参数设置的是1M,正是max_allowed_packet设置的太小导致了该问题,将max_allowed_packet设置为16M,问题彻底解决。

     http://blog.csdn.net/wireless_tech

  • 相关阅读:
    【Silverlight】Bing Maps开发应用与技巧二:自定义图钉标注控件和动态ToolPanel
    视频挖掘
    可视化工具
    Windows开机自启动程序的方法
    从MPEG到H.264:视频压缩标准演进历史
    Marginal distribution
    Applying data mining for ontology building
    combinatory categorial grammar 文章群
    prod place ment , aggregate words of particular actors
    北京软件著作权登记网
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5716449.html
Copyright © 2011-2022 走看看