ホームページ >データベース >mysql チュートリアル >一括操作中に発生する「一般エラー: 2006 MySQL Server が消えました」を修正するにはどうすればよいですか?

一括操作中に発生する「一般エラー: 2006 MySQL Server が消えました」を修正するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-30 22:20:30218ブラウズ

How to Fix the

「一般エラー: 2006 MySQL Server Has Gone Away」問題の解決

MySQL データベースに数百のレコードを挿入するなどの一括操作を実行する場合、次のエラーが発生します:

[PDOException] SQLSTATE[HY000]: General error: 2006 MySQL server has gone away

このエラーは通常、一定期間非アクティブな状態が続いた後に MySQL サーバーが接続を切断するタイムアウトの問題が原因で発生します。この問題を解決するには、次の 2 つの主な設定を調整することに重点を置きます:

1. wait_timeout

wait_timeout 設定は、非アクティブな接続を終了するまでに MySQL が待機する期間 (秒単位) を決定します。デフォルトでは、この値は共有ホスティング環境では比較的低い 30 秒に設定されています。

wait_timeout を増やすには、操作の開始時に次のクエリを発行します。

SET session wait_timeout=28800;

Thisコマンドは wait_timeout を 28800 秒、つまり約 8 時間に設定します。

2. interactive_timeout (オプション)

場合によっては、interactive_timeout 設定の調整も必要になる場合があります。この設定は、MySQL が対話型接続を終了するまでの秒数を指定します。

interactive_timeout を変更するには、wait_timeout を調整した後に次のクエリを実行します。

SET session interactive_timeout=28800;

検証

確認するには設定が正常に変更されたことを確認するには、変更の前後に次のクエリを実行できます。

<code class="php">$results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE);</code>

注意

タイムアウト設定を増やすと当面の問題は解決できますが、重要なことは次の点を考慮してください:

  • wait_timeout を非常に高い値 (例: 8 時間) に設定すると、アイドル状態の接続が過剰に待機される可能性があります。
  • 通常、wait_timeout を一定時間以内に保つことをお勧めします。妥当な範囲 (300 秒など)。

以上が一括操作中に発生する「一般エラー: 2006 MySQL Server が消えました」を修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。