我经常遇到以下错误:
PHP致命错误:带有消息'SQLSTATE [HY000]的未捕获异常'PDOException'[1129]由于许多连接错误,主机'MY SERVER'被阻止;使用'mysqladmin flush-hosts'
解锁使用常规(如crontab) mysqladmin flush-hosts 命令或增加max_connect_errors系统变量(如here编写)很容易解决问题。
但是!什么是“许多连续中断的连接请求”,为什么会发生这种情况?
我宁愿阻止上游问题,而不是纠正阻塞。
MySQL版本:5.5.12。我正在使用Zend Framework 1.11.10和Doctrine 2.1.6。
我的PHP代码中没有mysql_close()和mysqli_close()。
max_connect_errors有默认值10,我不想增加它,我想知道为什么我有错误。我使用一个cron,每隔5分钟执行一次mysqladmin flush-hosts命令。
答案 0 :(得分:1)
此响应是设计为安全措施,是达到mysql的 max_connection_errors 值的结果。 Here's a link Oracle提供了大部分可能原因和解决方案的详细信息。
最终,这意味着MySql停止响应连接尝试有很多连续的连接失败。
我使用一个cron,每5分钟做一次mysqladmin flush-hosts 命令。
当你如此迅速地达到这个极限时,只有少数可能是罪魁祸首:
无论如何,这很难追查。
虽然PDO不需要显式关闭mysql连接,但是对于这样的情况,有一些实践可以阻止这样的ServerAdmin搜索。
dev.mysql.com/doc/refman/5.0/en/cursors.html
答案 1 :(得分:0)
这意味着mysqld已收到来自给定主机的许多连接请求,这些请求在中间被中断。有关详情,请查看文档中的link。