我注意到 $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 ini 文件中你可以增加 MAX_USER_CONNECTIONS 和 MAX_CONNECTIONS
或者你可以尝试使用这个SQL命令:
GRANT ALL * TO 'root'@'localhost' WITH MAX_USER_CONNECTIONS 1000;
如何增加MySql连接数 参考:https://ubiq.co/database-blog/how-to-increase-max-connections-in-mysql/
检查默认最大连接数 登录 MySQL 命令行工具并运行以下命令来获取数据库服务器当前支持的默认最大连接数。
mysql> 显示“max_connections”等变量;
您将看到以下输出。
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 100 |
+-----------------+-------+
额外阅读:如何在查询中更改 MySQL 时区
增加最大连接数 增加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 服务器,更改将持续存在。
重启MySQL服务器 重新启动 MySQL 服务器以应用更改
$ sudo 服务 mysql 重启