一般的にエラー:
エラー:2006(CR_SERVER_GONE_ERROR)-MySQLサーバーが廃止されました
クライアントがサーバーに質問を送信できなかったことを意味します。
mysql インポート
を介してデータベースファイルをインポートする特定のケースでは mysqlでは、SQLファイル内の一部のクエリが大きすぎてインポートできず、サーバーで実行できなかったため、最初に発生したエラーでクライアントが失敗する可能性があります。
したがって、次の可能性があります。
残りのクエリを続行して実行するには、の強制オプション(-f)を追加しますmysql。
これは、データベースにキャッシュに関連する大規模なクエリがあり、いずれにしても関連がない場合に役立ちます。
増加max_allowed_packetし、wait_timeoutあなたのサーバ設定(例で~/.my.cnf)。
--skip-extended-insert大規模なクエリを分解するオプションを使用してデータベースをダンプします。その後、再度インポートします。
の--max-allowed-packetオプションを適用してみてくださいmysql。
一般的な理由
一般に、このエラーは次のようないくつかのことを意味する可能性があります。
サーバーへのクエリが正しくないか大きすぎる
解決策:変数を増やしmax_allowed_packetます。
変数がで[mysqld]はなくセクションの下にあることを確認してください[mysql]。
(など1G)のテストに大きな数を使用することを恐れないでください。
MySQL / MariaDBサーバーを再起動することを忘れないでください。
値が正しく設定されていることを再確認します。
mysql -sve "SELECT @@max_allowed_packet" # or:
mysql -sve "SHOW VARIABLES LIKE 'max_allowed_packet'"
クライアント側のTCP / IP接続からタイムアウトが発生しました。
解決策:変数を増やしwait_timeoutます。
サーバーへの接続が閉じられた後にクエリを実行しようとしました。
解決策:アプリケーションの論理エラーを修正する必要があります。
ホスト名の検索に失敗した(DNSサーバーの問題など)、またはサーバーが--skip-networkingオプションで起動された。
別の可能性として、ファイアウォールがMySQLポート(たとえば、デフォルトで3306)をブロックしている可能性があります。
実行中のスレッドが強制終了されたため、再試行してください。
クエリの実行中にサーバーが停止するバグが発生しました。
別のホストで実行されているクライアントには、接続に必要な特権がありません。
さらに多くの情報が含まれるため、B.5.2.9 MySQLサーバーが廃止されました。
デバッグ中
以下は、エキスパートレベルのデバッグのアイデアです。
ログを確認してください。
sudo tail -f $(mysql -Nse "SELECT @@GLOBAL.log_error")
経由して接続をテストmysql、telnetまたはpingの機能(例えばmysql_pingPHPで)。
tcpdumpMySQL通信を傍受するために使用します(ソケット接続では機能しません)。例:
sudo tcpdump -i lo0 -s 1500 -nl -w- port mysql | strings
Linuxでは、を使用しますstrace。BSD / Macではdtrace/を使用しますdtruss。例:
sudo dtruss -a -fn mysqld 2>&1
参照:MySQLのDTracing入門
MySQLサーバーまたはクライアントをデバッグする方法の詳細については、26.5 MySQLのデバッグと移植を参照してください。
参考までに、クライアントコマンドのエラーのsql-common/client.cスローを担当するファイルのソースコードを確認してくださいCR_SERVER_GONE_ERROR。
MYSQL_TRACE(SEND_COMMAND, mysql, (command, header_length, arg_length, header, arg));
if (net_write_command(net,(uchar) command, header, header_length,
arg, arg_length))
{
set_mysql_error(mysql, CR_SERVER_GONE_ERROR, unknown_sqlstate);
goto end;
}