MySQL错误1040:连接过多

81

如何修复这个"SQL Error 1040: Too Many Connection"的问题,即使我尝试执行以下操作:

max_user_connection=500

仍然是 "Too many connection"


以下是我们案例中唯一有效的解决方法:https://stackoverflow.com/questions/53226015/error-too-many-connections-on-codeigniter-website - Pedro Araujo Jorge
15个回答

1
即使我将所有连接都包装在using语句中,仍然会出现此错误。我忽视的是这些连接保持打开状态的时间。
我的操作类似于以下内容:
using (MySqlConnection conn = new MySqlConnection(ConnectionString))
{
    conn.Open();
    foreach(var m in conn.Query<model>(sql))
    {
        // do something that takes a while, accesses disk or even open up other connections
    }
}

请记住,连接不会在循环完成之前关闭,如果循环创建更多连接,它们可能会不断增加。
这样做更好:
List<model> models = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionString))
{
    conn.Open();

    models = conn.Query<model>(sql).ToList(); // to list is needed here since once the connection is closed you can't step through an IEnumerable   
}

foreach(var m in models)
{
    // do something that takes a while, accesses disk or even open up other connections
}

那样,您的连接就被允许关闭并释放回到连接池中,然后您可以去做其他事情。

0

最新解决方案

如果您正在使用Windows,请转到以下路径:

‪C:\xampp\mysql\bin\my.ini

[mysqld] 部分下添加以下内容:

max_connections = 500

1
这不是\data\,实际上是C:\xampp\mysql\bin\my.ini。 - ViBoNaCci

0

检查当前运行的应用程序是否仍在访问您的mysql并已消耗所有DB连接。

因此,如果您尝试从工作台访问mysql,则会收到“连接过多”错误。

停止当前运行的Web应用程序,该应用程序持有所有这些db连接,然后您的问题将得到解决。


0

通过重新启动数据库Windows服务解决了问题


这实际上并没有解决真正的原因。当然,重新启动数据库会关闭所有连接并重新开始,但如果OP的程序中存在错误,那么这些错误会再次导致问题。 - undefined

0

https://dev.mysql.com/doc/refman/8.0/en/too-many-connections.html中明确提到的问题:

如果客户端尝试连接MySQL服务器时遇到“Too many connections”错误,则表示所有可用连接都已被其他客户端使用。

几分钟后,我解决了这个问题,似乎是其他客户端释放了连接,同时我也尝试重启了VS和Workbench。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接