登录

mysql - php查询报错Error while sending QUERY packet. PID=xxx

背景:使用Yii2命令行模式开启脚本监控rabbitmq队列,当队列有订单信息,执行查询,更新操作(相当于PHP文件写个查询,更新,使用命令行启动)

问题:一开始监控没有问题,每过一段时间会抛出错误

> Error while sending QUERY packet. PID=25370. The SQL being executed was: 一句sql语句(此sql直接执行没有错误).

已经找到问题解决方案,由于我等待消息队列是一个长连接,而我在等待回调前有个数据库连接,数据库的wait_timeout=28800,所以只要下一条消息离上一条消息超过8小时,就会出现这个错误,我把wait_timeout设置成10,并且捕获异常,发现真实的报错是 MySQL server has gone away ,
所以只要在把等待回调前那次数据库连接主动close掉就可以解决问题

# PHP
PHP中文网PHP中文网2196 天前663 次浏览

全部回复(2) 我要回复

  • PHPzhong

    PHPzhong2017-04-11 10:09:47

    已经找到问题解决方案,由于我等待消息队列是一个长连接,而我在等待回调前有个数据库连接,数据库的wait_timeout=28800,所以只要下一条消息离上一条消息超过8小时,就会出现这个错误,我把wait_timeout设置成10,并且捕获异常,发现真实的报错是 MySQL server has gone away ,
    所以只要在把等待回调前那次数据库连接主动close掉就可以解决问题

    回复
    0
  • 高洛峰

    高洛峰2017-04-11 10:09:47

    你的这句sql是自己写的原生态的sql?还是框架自带的sql处理方法?如果是你自己写的sql建议你换成框架里面的sql处理方法试试

    回复
    0
  • 取消回复发送