PHP报错:MySQL server has gone away

PHP程序在执行批量sql的时候偶尔报错:MySQL server has gone away。
主要逻辑就是循环处理20个事务,一个事务大概12个左右的sql,也就是一个流程下来估计有超过240个sql左右,偶尔会报错,我看了超时时间设置:
clipboard.png
时间是充足的很,可是为什么还是会报错呢?
还有就是sql不存在大数据插入,所以不会是数据包超过限制而导致的,网上搜索的大体三种原因:
1、长时间闲置导致连接断开,这个排除
2、sql语句太长,数据包过大导致,这个排除
3、超时时间过短导致,这个排除

想破脑壳都想不到什么原因,测试了整个流程执行时间平均不超过10秒 为啥呢?有木有大神指导一下

我用的是PDO方式连接,其实每次执行sql之前都有判断连接是否断开

clipboard.png

可是好像没用

阅读 3.9k
4 个回答

mysql连接断开,原因待定 。。。。 可能执行有问题,mysql强制断开了连接~

my.ini 文件,修改这三个值,没有添加

max_allowed_packet = 500M

wait_timeout=288000

interactive_timeout = 288000

使用 mysqli_ping(); 检查连接状态,如果链接断开就重新连接;
$link_status = mysqli_ping($con);
if(false==$link_status)
{

//mysqli_connect

}
不知道这种方法对你是否有用。

试一下先获取程序异常,再获取pdo异常,看是不是程序执行上有什么错误

你的mysql很忙,在干别的事。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题