MySQL データベースに数百のレコードを挿入するなどの一括操作を実行する場合、次のエラーが発生します:
[PDOException] SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
このエラーは通常、一定期間非アクティブな状態が続いた後に MySQL サーバーが接続を切断するタイムアウトの問題が原因で発生します。この問題を解決するには、次の 2 つの主な設定を調整することに重点を置きます:
wait_timeout 設定は、非アクティブな接続を終了するまでに MySQL が待機する期間 (秒単位) を決定します。デフォルトでは、この値は共有ホスティング環境では比較的低い 30 秒に設定されています。
wait_timeout を増やすには、操作の開始時に次のクエリを発行します。
SET session wait_timeout=28800;
Thisコマンドは wait_timeout を 28800 秒、つまり約 8 時間に設定します。
場合によっては、interactive_timeout 設定の調整も必要になる場合があります。この設定は、MySQL が対話型接続を終了するまでの秒数を指定します。
interactive_timeout を変更するには、wait_timeout を調整した後に次のクエリを実行します。
SET session interactive_timeout=28800;
確認するには設定が正常に変更されたことを確認するには、変更の前後に次のクエリを実行できます。
<code class="php">$results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE);</code>
タイムアウト設定を増やすと当面の問題は解決できますが、重要なことは次の点を考慮してください:
以上が一括操作中に発生する「一般エラー: 2006 MySQL Server が消えました」を修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。