跳转到内容
无痕工具库 无痕工具库

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 连接。

开始之前

  • 你需要通过 Hostinger 控制面板的文件管理器或 FTP 访问你网站的 PHP 文件。
  • 此修复方法适用于使用 mysqli 或 PDO 连接 MySQL 的 PHP 网站。

如何修复

你需要找到网站代码中处理数据库连接的文件。它通常命名为 “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 支持团队以获得进一步的帮助。

其他常见数据库问题

如果你遇到的是其他与数据库相关的问题,请参阅: