博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
导致“mysql has gone away”的两种情况
阅读量:4322 次
发布时间:2019-06-06

本文共 984 字,大约阅读时间需要 3 分钟。

导致“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

转载于:https://www.cnblogs.com/zengkefu/p/5716449.html

你可能感兴趣的文章
返回用户提交的图像工具类
查看>>
树链剖分 BZOJ3589 动态树
查看>>
挑战程序设计竞赛 P131 区间DP
查看>>
【例9.9】最长公共子序列
查看>>
NSFileManager打印目录下的文件的函数
查看>>
Rails--bundle exec rake db:migrate
查看>>
深度优先搜索 之 CODE[VS] 1116 四色问题
查看>>
浏览器渲染过程
查看>>
js遍历Object所有属性
查看>>
再也不学AJAX了!(三)跨域获取资源 ③ - WebSocket & postMessage
查看>>
pycharm设置python文件颜色
查看>>
不换行输出的两种方式
查看>>
贵在坚持不懈
查看>>
hdu 1251 统计难题
查看>>
java中关于String 类型数据 的存储方式
查看>>
javascript中的with语句
查看>>
常用设计模式:装饰者模式
查看>>
python接口自动化--get请求
查看>>
ajax 上传文件
查看>>
lintcode-easy-Flatten Binary Tree to Linked List
查看>>