これらを修正する方法、「SQLエラー1040:接続が多すぎます」
max_user_connection=500
それでも「接続が多すぎる」
MySQL:エラー1040:接続が多すぎます
これは基本的に、MySQLが最大接続数を同時に処理し、デフォルトで1接続を同時に処理することを示しています。
これらの次の理由により、MySQLは接続を使い果たします。
遅いクエリ
データストレージ技術
不正な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の量が増えることに注意してください。
サーバーのパーティションまたはドライブの使用可能なディスク領域が不足すると、MySQLからこのエラーが返されることを知っておく価値があります。確かにnot実際の 接続されているユーザーの数 である場合、次のステップは空き領域があることを確認することですMySQLサーバーのドライブ/パーティション。
2019年1月編集:
これはMySQL 5.7および5.8に当てはまります。これより上のバージョンについては知りません。
このような接続が不足している場合、開いている接続を閉じていない可能性が高くなります。
接続を開くコードを確認し、できるだけ早く接続が閉じられるようにします。通常、usingキーワードを使用して、IDisposable(データベース接続を含む)必要な場所からスコープを離れるとすぐにそのようなオブジェクトが破棄されるようにします。
次のクエリを使用して、アクティブな接続の現在の数を確認できます。
show processlist
許可される接続の合計を増やすには、max_connections
を変更する必要があります。
max_user_connections
をデフォルトの0に戻す=>no limitlimitユーザー接続ごとにこれ。
プログラムでは、接続を開き、閉じずに開いたままにしておきます。
私は同じ問題に直面し、最終的に特定しました。
Catchを試してからこのコードを追加しました。
finally{
try {
rs.close();
p.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
このエラーは、接続制限が構成ファイルmy.cnf
で定義されている最大制限に達したために発生します。
このエラーを修正するには、root
ユーザーとしてMySQLにログインします(注:mysqlがroot user
に追加の接続を事前に割り当てるため、rootとしてログインできます)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にアクセスしており、すべてのDB接続を消費しているかどうかを確認します。
したがって、ワークベンチからmysqlにアクセスしようとすると、「接続が多すぎます」というエラーが発生します。
これらすべてのdb接続を保持している現在実行中のWebアプリケーションを停止すると、問題は解決します。