Hostinger MySQL “Operation not permitted” 错误修复教程
如果你的网站出现如下数据库连接错误:
- PHP Fatal error: Uncaught mysqli_sql_exception: Operation not permitted
- Connection failed: Operation not permitted
- ERROR: Could not connect. Operation not permitted
- SQLSTATE[HY000] [2002] Operation not permitted
这通常意味着你的网站在每次页面请求时都打开一个新的 MySQL 连接,而不是复用现有连接。Hostinger 对每个账户强制执行 MySQL 连接速率限制(每秒 20 个新连接),以确保所有客户公平地使用资源。如果网站在每次请求时都新建连接,在流量高峰期间可能会超出此限制,从而导致上述错误。
要解决此问题,你只需切换到持久 MySQL 连接。
开始之前
如何修复
你需要找到网站代码中处理数据库连接的文件。它通常命名为 “config.php”、“db.php”、“connect.php”、“database.php” 或类似名称。
方法一:如果你的网站使用 mysqli
找到类似下面这一行:
mysqli_connect("localhost", $user, $pass, $db);将 “localhost” 改为 “p:localhost”:
mysqli_connect("p:localhost", $user, $pass, $db);“p:” 前缀会让 PHP 使用持久连接,在多个请求之间保持连接打开,而不是每次都新建连接。
方法二:如果你的网站使用 PDO
找到类似下面这一行:
new PDO("mysql:host=localhost;dbname=$db", $user, $pass);添加 “[PDO::ATTR_PERSISTENT => true]” 作为第四个参数:
new PDO("mysql:host=localhost;dbname=$db", $user, $pass, [PDO::ATTR_PERSISTENT => true]);保存文件,然后重新加载你的网站。
完成此更改后,你的网站将复用现有的 MySQL 连接,而不是在每次请求时都新建连接。这样可以使连接数保持在 Hostinger 的速率限制之内,从而解决“Operation not permitted”错误。你的数据库凭据和所有其他设置保持不变。
注意事项
- 此修复无需更改你的数据库凭据或数据库名称。
- 如果你使用的是 WordPress、Joomla 等内容管理系统(CMS),或带有自身数据库抽象层的框架,连接文件的位置可能有所不同。请查阅你的 CMS 文档,了解如何启用持久数据库连接。
- 如果应用修复后错误仍然存在,请联系 Hostinger 支持团队以获得进一步的帮助。
其他常见数据库问题
如果你遇到的是其他与数据库相关的问题,请参阅: