【问题标题】:MySQL SQL STATE[HY000] [1203] User XXXXX already has more than 'max_user_connections' active connectionsMySQL SQL STATE[HY000] [1203] 用户 XXXXX 已经有超过 'max_user_connections' 的活动连接
【发布时间】:2016-08-01 03:11:15
【问题描述】:

我注意到我从 $STH->fetch(PDO::FETCH_ASSOC) 的返回值是:

SQLSTATE[HY000] [1203] User *USERNAMEHERE* already has more than 'max_user_connections' active connections

我所有的查询都成功了,一切似乎都正常。

我认为我通过将连接分配为 NULL 来正确关闭连接。这是我的功能,你知道我为什么要最大化吗?

function mysql_read_single_row($sql, $array_of_values) {

    try {
        //create a connection
        $DBH = new PDO("mysql:host=".CONST_MYSQL_HOST.";dbname=".CONST_MYSQL_DBNAME, CONST_MYSQL_RUSER, CONST_MYSQL_RPASS);

        //set the sql
        $STH = $DBH->prepare($sql);

        //execute query
        $STH->execute($array_of_values);  
    }
    catch(PDOException $e) {
        echo $e->getMessage();
        return false;
    }

    $return_row = $STH->fetch(PDO::FETCH_ASSOC);

    //close the connection
    $STH = null;
    $DBH = null;

    //strip any escaped quotes from the data
    $return_row = array_map('stripslashes', $return_row);

    //return the array
    return $return_row;
}

将 $STH 和 $DBH 设置为 null 是否不足以防止出现此错误?

【问题讨论】:

标签: php mysql pdo


【解决方案1】:

如何增加MySql连接 参考:https://ubiq.co/database-blog/how-to-increase-max-connections-in-mysql/

  1. 检查默认的最大连接数 登录 MySQL 命令行工具并运行以下命令以获取您的数据库服务器当前支持的默认最大连接数。

    mysql> 显示“max_connections”等变量;

您将看到以下输出。

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 100   |
+-----------------+-------+

额外阅读:如何在查询中更改 MySQL 时区

  1. 增加最大连接数 有两种方法可以增加 MySQL 连接。这是通过 MySQL 命令行工具将最大连接数更新为 200 的命令,无需重新启动。

    mysql> 设置全局 max_connections = 200;

上面的命令会在不重启的情况下增加最大连接数,但是一旦服务器重启,更改就会消失。此方法有助于增加生产系统(例如网站/应用程序)中的可用连接,而无需重新启动数据库服务器。

要永久增加最大连接数,请打开 my.cnf 文件,

$ sudo vi /etc/my.cnf

根据您的 Linux 发行版和安装类型,my.cnf 文件可能位于以下任何位置。

/etc/my.cnf
/etc/mysql/my.cnf
$MYSQL_HOME/my.cnf
~/.my.cnf

在 [mysqld] 部分下添加以下行。

max_connections = 200

现在,如果您重新启动 MySQL 服务器,更改将保持不变。

  1. 重启 MySQL 服务器 重启 MySQL 服务器以应用更改

    $ sudo service mysql 重启

【讨论】:

    【解决方案2】:

    在你的 php ini 文件中你可以增加 MAX_USER_CONNECTIONS 和 MAX_CONNECTIONS

    或者你可以尝试使用这个 SQL 命令:

    GRANT ALL * TO 'root'@'localhost' WITH MAX_USER_CONNECTIONS 1000; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-01
      • 2014-06-14
      • 2017-12-21
      • 1970-01-01
      • 2014-05-20
      • 2020-12-21
      • 1970-01-01
      相关资源
      最近更新 更多