【发布时间】:2013-06-13 14:29:08
【问题描述】:
我在尝试在超时的连接上查询数据库时开始收到此错误。
Fatal error: Uncaught exception 'ErrorException' with message 'mysql_query(): MySQL server has gone away'
所以我做了一堆研究,论坛上 99% 的用户都说你可以使用 mysql_ping 命令来检查连接,所以我把这个放在了:
if(!mysql_ping($this->sDBLink))
Connect(true);
现在我得到了同样的错误,只是引用了 mysql_ping 函数而不是 mysql_query 函数:
Fatal error: Uncaught exception 'ErrorException' with message 'mysql_ping(): MySQL server has gone away'
如何可靠地检查连接是否仍然存在? mysql_ping 会引发异常。
【问题讨论】:
-
'MySQL server has gone away' 是一个有趣的异常消息 - 也许是微软的叛逃者?
-
据我了解,这意味着连接已超时。我在程序的早期创建了我的连接。当我稍后尝试使用相同的连接时,会出现此错误。
-
您没有使用 PDO 或 mysqli 对象是否有原因?他们已经弃用了这个扩展,我从来没有使用其他两个中的任何一个看到过这个错误。
-
您需要在连接上捕获错误,只有在建立与服务器的连接时 ping 才有效。如果您在连接上捕获错误,则可以中止应用程序加载并标记一个不错的连接错误。
-
您的全局设置 mysql.reconnect 是否启用?检查php.net/manual/en/mysqli.configuration.php#ini.mysqli.reconnect