环境
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一下的方式,保持链接活跃不断开。

