首页

定时任务中解决SQLSTATE[HY000]: General error: 2006 MySQL server has gone away问题的方法

kkcode
2023-09-24  阅读 227

环境

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%';复制代码

如下图所示: file

解决,通过每隔一段时间ping一下的方式,保持链接活跃不断开。

file

参考

本文为作者原创文章,转载无需和我联系,但请注明转载链接。 【前端黑猫】