我注意到我从$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_CONNECTONS
或者您可以尝试使用以下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 Server以应用更改
$sudo服务mysql重启