如何解决这些,“SQL错误1040:太多的连接”甚至我试图把
max_user_connection=500
还是“太多的连接”
如何解决这些,“SQL错误1040:太多的连接”甚至我试图把
max_user_connection=500
还是“太多的连接”
MySQL的:ERROR 1040:太多的连接
这基本上告诉MySQL的同时处理的最大连接数,默认情况下它可以同时处理100个连接。
这些理由如下导致MySQL来跑出来的连接。
慢查询
数据存储技术
坏MySQL配置
我可以通过执行以下来克服这个问题。
打开MySQL command line tool
和类型,
show variables like "max_connections";
这将返回你这样的事情。
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 100 |
+-----------------+-------+
您可以更改,而无需重新启动MySQL服务器发出以下命令,例如200的设置。
set global max_connections = 200;
现在,当你重启MySQL下一次它将使用此设置,而不是默认。
请记住,增加连接会增加RAM量的数量需要为MySQL运行。
这是值得了解的是,如果你在你的服务器分区或驱动器运行的可用磁盘空间,这也将导致MySQL来返回此错误。 如果你确定这不是实际连接的用户数之后,下一步是检查你对你的MySQL服务器驱动器/分区的可用空间。
编辑2019年1月:
这是MySQL的5.7和5.8属实。 我不知道以上版本这一点。
如果运行了这样的连接,那么很好,你不关闭已打开的连接。
查看打开的连接代码,并确保连接尽快关闭实用。 通常你想利用周围的任何东西的使用关键字是实现IDisposable(包括数据库连接),以确保这些对象只要他们离开需要它们的范围配置。
您可以检查与此查询活动连接的当前数量:
show processlist
参考: MySQL的显示状态-主动或总连接?
你必须改变max_connections
增加总允许的连接。
并设置max_user_connections
回默认值0 => 没有限制 ,除非你需要为每个用户连接数限制这一点。
MySQL的连接太多
在你的程序,你会打开连接,而不将其关闭悬空。
我面临着同样的问题,终于确定了。
我加入这个代码,尝试捕捉后。
finally{
try {
rs.close();
p.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
发生此错误,由于连接限制达到最大极限,在配置文件中定义my.cnf
。
为了解决这种错误,登录到MySQL作为root
用户(注意:可以登录为根,因为,MySQL将预先分配附加一个连接root user
),并增加通过使用下面的命令max_connections变量:
SET GLOBAL max_connections = 500;
这种变化会在那里,直到下一次重新启动服务器。 为了使这种更改永久,你有你的配置文件进行修改。 你可以做到这一点,
vi /etc/my.cnf
[mysqld]
max_connections = 500
这篇文章已经详细的一步一步的解决方法来解决这个错误 。 看看吧,希望它可以帮助你。 谢谢。
试试这个 :
打开终端并输入以下命令: sudo gedit /etc/mysql/my.cnf
粘贴my.cnf文件的行: set-variable=max_connections=500
请检查您的当前运行的应用程序仍在访问你的mysql和占用了所有的数据库连接。
所以,如果你尝试从工作台MySQL,你会得到“太多的连接”的错误。
停止其持有所有这些数据库连接,然后你的问题就解决了你当前运行的Web应用程序。