我在运行在Ubuntu Linux上的C++程序中遇到了MySQL的"Too many connections"错误。
以下是出现错误的代码(它位于一个返回mysql错误(如果有)的方法内):
MYSQL connect;
mysql_init(&connect);
if (!mysql_real_connect(&connect,SERVER,USER,PASSWORD,DATABASE,0,NULL,0))
{
return mysql_error(&connect);
}
这段代码一直返回字符串“连接太多”。
我在想这是否是其他错误。在我遇到这个错误之前,该程序已经运行了数月之久。当错误首次出现时,是因为我针对数千个更新/读取运行了该程序,所以很可能用尽了可用的连接。问题是,如果是这样的话,我找不到释放它们的方法。
以下是我尝试过的:
- FLUSH HOSTS;
- FLUSH TABLES;
- 重新启动MYSQL
- 完全重新启动机器
自从这个错误首次出现以来已经超过12个小时了,所以如果是连接问题,则没有被重置/释放。我本以为重新启动机器会释放一些东西。
sudo pkill MySQL
终止和分离正在监听和已建立的 MySQL 连接。您可以使用netstat -apn | grep mysql | grep -i established
命令调试连接,以查看所有已建立的 MySQL 连接。 - Bitmap