mySQL错误1040:连接太多

问题描述 投票:29回答:8

如何修复这些,“SQL错误1040:连接太多”,即使我试着把它

max_user_connection=500

仍然“连接太多”

mysql connection
8个回答
28
投票

MySQL:ERROR 1040:连接太多

这基本上告诉MySQL同时处理最大连接数,默认情况下它同时处理100个连接。

以下原因导致MySQL耗尽连接。

  1. 慢查询
  2. 数据存储技术
  3. 错误的MySQL配置

通过以下方式我能够克服这个问题。

打开MySQL command line tool并输入,

show variables like "max_connections";

这将返回你这样的东西。

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 100   |
+-----------------+-------+

您可以将设置更改为例如通过发出以下命令200而不必重新启动MySQL服务器。

set global max_connections = 200;

现在,当您下次重新启动MySQL时,它将使用此设置而不是默认设置。

请记住,增加连接数将增加MySQL运行所需的RAM量。


27
投票

值得一提的是,如果服务器分区或驱动器上的可用磁盘空间不足,这也会导致MySQL返回此错误。如果您确定它不是真正的number of users connected,那么下一步是检查MySQL服务器驱动器/分区上是否有可用空间。

编辑2019年1月: MySQL 5.7和5.8也是如此。我不知道上面这个版本。


19
投票

如果你没有这样的连接,很可能你没有关闭你打开的连接。

查看打开连接的代码,并确保尽快关闭连接。通常,您希望在实现IDisposable(包括数据库连接)的任何内容周围使用using关键字,以确保在将这些对象放置到需要它们的范围时立即对其进行处置。

您可以使用此查询检查当前活动连接数:

show processlist

参考:MySQL show status - active or total connections?


9
投票

您必须更改max_connections以增加允许的总连接数。

并将max_user_connections设置回默认值0 =>无限制,除非您需要限制每个用户连接。

MySQL Too many connections


8
投票

在您的程序中,您将打开连接并保持打开而不关闭它。

我遇到了同样的问题并最终确定了。

在try catch之后我添加了这段代码。

finally{
    try {
        rs.close();
        p.close();
        conn.close();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

7
投票

由于连接限制达到最大限制(在配置文件my.cnf中定义),会发生此错误。

为了解决这个错误,请以root用户身份登录MySQL(注意:您可以以root身份登录,因为,mysql将为root user预先分配一个连接)并使用以下命令增加max_connections变量:

SET GLOBAL max_connections = 500;

此更改将在那里,直到下次服务器重新启动。为了使此更改成为永久更改,您必须在配置文件中进行修改。你可以这样做,

vi /etc/my.cnf

[mysqld]
max_connections = 500

This article已逐步详细介绍workaround to fix this error。看看它,我希望它可以帮助你。谢谢。


1
投票

试试这个 :

打开终端并输入以下命令:sudo gedit /etc/mysql/my.cnf

将该行粘贴到my.cnf文件中:set-variable=max_connections=500


0
投票

检查当前正在运行的应用程序是否仍在访问您的mysql并消耗了所有数据库连接。

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

停止当前运行的Web应用程序,该应用程序将保留所有这些数据库连接,然后您的问题将得到解决

© www.soinside.com 2019 - 2024. All rights reserved.