执行批量操作时,例如向 MySQL 数据库插入数百条记录时,您可能会遇到以下问题:遇到以下错误:
[PDOException] SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
此错误通常是由于超时问题导致的,即 MySQL 服务器在一段不活动时间后会断开连接。要解决此问题,请重点调整两个主要设置:
wait_timeout 设置确定 MySQL 在终止非活动连接之前等待的持续时间(以秒为单位)。默认情况下,在共享托管环境中,此值设置为相对较低的 30 秒。
要增加 wait_timeout,请在操作开始时发出以下查询:
SET session wait_timeout=28800;
此命令将 wait_timeout 设置为 28800 秒,大约为 8 小时。
在某些情况下,您可能还需要调整 Interactive_timeout 设置。此设置指定 MySQL 终止交互式连接之前的秒数。
要修改 Interactive_timeout,请在调整 wait_timeout 后执行以下查询:
SET session interactive_timeout=28800;
确认设置已成功修改,您可以在更改之前和之后执行以下查询:
<code class="php">$results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE);</code>
虽然增加超时设置可以解决当前问题,但重要的是考虑以下因素:
以上是如何修复批量操作期间的“常规错误:2006 MySQL 服务器已消失”?的详细内容。更多信息请关注PHP中文网其他相关文章!