MySQLサーバーのエラーがなくなったその他の一般的な理由は次のとおりです。
-
あなた(またはdb管理者)は、KILLステートメントまたはmysqladminkillコマンドを使用して実行中のスレッドを強制終了しました。
-
サーバーへの接続を閉じた後、クエリを実行しようとしました。これは、修正が必要なアプリケーションの論理エラーを示しています。
-
別のホストで実行されているクライアントアプリケーションには、そのホストからMySQLサーバーに接続するために必要な権限がありません。
-
クライアント側のTCP/IP接続からタイムアウトが発生しました。これは、次のコマンドを使用している場合に発生する可能性があります:mysql_options(...、MYSQL_OPT_READ_TIMEOUT、...)またはmysql_options(...、MYSQL_OPT_WRITE_TIMEOUT、...)。この場合、タイムアウトを増やすと問題の解決に役立つ場合があります。
-
サーバー側でタイムアウトが発生し、クライアントでの自動再接続が無効になっています(MYSQL構造の再接続フラグは0です)。
-
Windowsクライアントを使用していて、コマンドが発行される前にサーバーが接続を切断していました(おそらくwait_timeoutの有効期限が切れたため)。
-
Windowsの問題は、サーバーへのTCP / IP接続への書き込み時にMySQLがOSからエラーを受け取らない場合がありますが、接続から回答を読み取ろうとするとエラーが発生する場合があります。
-
これに対する解決策は、最後のクエリから長い時間が経過している場合は接続でmysql_ping()を実行するか(これはConnector / ODBCが実行することです)、mysqldサーバーでwait_timeoutを非常に高く設定して、実際には決して実行しないようにすることです。
-
正しくない、または大きすぎるクエリをサーバーに送信した場合にも、これらのエラーが発生する可能性があります。 mysqldが大きすぎるか故障しているパケットを受信した場合、mysqldはクライアントに問題が発生したと見なし、接続を閉じます。大きなクエリが必要な場合(たとえば、大きなBLOB列を操作している場合)、サーバーのmax_allowed_packet変数(デフォルト値は4MB)を設定することで、クエリの制限を増やすことができます。また、クライアント側で最大パケットサイズを増やす必要がある場合もあります。パケットサイズの設定の詳細については、セクションB.5.2.10「パケットが大きすぎます」を参照してください。
-
非常に多くの行を挿入するINSERTまたはREPLACEステートメントも、この種のエラーを引き起こす可能性があります。これらのステートメントのいずれかは、挿入される行数に関係なく、サーバーに単一の要求を送信します。したがって、INSERTまたはREPLACEごとに送信される行数を減らすことで、エラーを回避できることがよくあります。
-
また、クライアントが4.0.8より古く、サーバーが4.0.8以上の場合、またはその逆の場合に16MB以上のパケットを送信すると、接続が失われます。
-
ホスト名のルックアップが失敗した場合(たとえば、サーバーまたはネットワークが依存しているDNSサーバーがダウンした場合)にも、このエラーが発生する可能性があります。これは、MySQLが名前解決のためにホストシステムに依存しているが、それが機能しているかどうかを知る方法がないためです。MySQLの観点からは、問題は他のネットワークタイムアウトと区別できません。
-
また、MySQLが--skip-networkingオプションを指定して起動された場合、MySQLサーバーが消えたというエラーが表示される場合があります。
-
このエラーを引き起こす可能性のある別のネットワークの問題は、MySQLポート(デフォルトは3306)がファイアウォールによってブロックされているため、MySQLサーバーへの接続がまったく妨げられている場合に発生します。
-
このエラーは、子プロセスをフォークするアプリケーションでも発生する可能性があります。これらのアプリケーションはすべて、MySQLサーバーへの同じ接続を使用しようとします。これは、子プロセスごとに個別の接続を使用することで回避できます。
-
クエリの実行中にサーバーが停止するというバグが発生しました。
次のリンクを確認してください: Gone Away