定时任务中解决SQLSTATE[HY000]: General error: 2006 MySQL server has gone away问题的方法
环境
PHP7 MySQL5.6 PDO连接
场景
我有一个定时任务,每天12:11和23:30执行,更新数据库数据
问题
我启动定时任务时,第一次两个时间点都可以执行成功,第二次就会报错如:ERROR 2006 (HY000): MySQL server has gone away。
排查
排查超时时间的设置,是否超过了我们所设定的超时时间。 通过命令查看,超时时间wati_timeout设置为默认值8小时,我们已经超时,MySQL就会断开不活跃的连接。
# 链接到MySQL
/www/server/mysql/bin/mysql -h localhost -uroot -p密码
# 查看MySQL链接上等待时长,wait_timeout为默认值8小时,超时未活动就会断开连接
mysql> show variables like '%timeout%';复制代码
如下图所示:
解决,通过每隔一段时间ping一下的方式,保持链接活跃不断开。
参考
本文为作者原创文章,转载无需和我联系,但请注明转载链接。 【前端黑猫】