解决了一个MySQL server has gone away ,记录一下

今天的代码是以daemon的形式运行,初始化的时候会select一批数据,其余出于效率的考虑,只会在其他地方触发的时候让他连一次数据库,做一次select。
运行的时候,初始化的时候没有任何问题。过段时间有触发他做作select的时候,就会报MySQL server has gone away。
看了网上的分析,可能的原因有两种:一种是两次的请求的间隔时间超过了wait_timeout,服务断开连接了;还有一种是max_allowed_packet过小。
查看了my.cnf,max_allowed_packet=16M,初步怀疑是前者的原因。且在第一次select与触发查询之间有较长的时间间隔,而到知道连接不可用。
于是在每次select之前加上了mysql_ping(),如果ping失败,还要从新连接数据库。
因为用mysql_ping的时候也有可能遇到MySQL server has gone away的问题,相当于用mysql_ping测试连接是否可用。要不可用就把连接断了重新连接。比较巧妙的绕过了连接不可用的解决办法,最后问题得到解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值