”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 为什么我的MySQL连接超时在60秒后,即使设置了较高?

为什么我的MySQL连接超时在60秒后,即使设置了较高?

发布于2025-01-29
浏览:341

Why Does My MySQL Connection Timeout After 60 Seconds, Even Though `wait_timeout` Is Set Higher?

MySQL 服务器在 60 秒后断开连接

问题背景

我在执行一个以前运行良好的 SQL 查询时遇到了错误,该错误会在 60 秒后超时并抛出一个错误。虽然查询很慢,但作为夜间任务的一部分运行,所以这本身不是问题(因此请不要建议我对其进行优化)。

问题详情

我通过从 PHP 运行 "select SLEEP(120); (见下文)来重现该错误。但是,从 MySQL 客户端运行相同的语句会成功(返回 0)。我尝试调整 wait_timeout(设置为 28800),但没有成功。我还重启了数据库服务器和机器本身。

错误总是在 60 秒后超时,这让我认为它很可能是设置问题,而不是资源限制问题。

系统信息

  • Windows Server 2003
  • MySQL 5.1.36-community
  • PHP 5.3

测试代码、输出和 SHOW VARIABLES

[测试代码、输出和 SHOW VARIABLES 的结果在此处省略]

解决方案

php 选项 mysql.connect_timeout 是此问题的根源。它不仅用于连接超时,还用于等待来自服务器的第一个响应。你可以这样增加它:

ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300);

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3