ホームページ  >  記事  >  データベース  >  MySQL サーバーで「一般エラー: 2006 MySQL サーバーが消えました」というメッセージが表示され続けるのはなぜですか?

MySQL サーバーで「一般エラー: 2006 MySQL サーバーが消えました」というメッセージが表示され続けるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-29 18:21:47325ブラウズ

Why Does my MySQL Server Keep Saying

MySQL サーバーが消えた: 「一般エラー: 2006」の謎を詳しく調べる

MySQL データベースに一括挿入を実行すると、恐ろしい「SQLSTATE[HY000]: 一般エラー: 2006 MySQL サーバーが消えました」エラーが表示されることがあります。この一見とらえどころのない問題は、データベース操作の円滑な実行を妨げます。その秘密を解明するために、私たちはこの不可解なエラーを理解し、潜在的な解決策を探る旅に乗り出します。

隠れた原因の解明: wait_timeout

MySQL サーバーには、消えてしまいました」というエラーは、多くの場合、タイムアウト制限が原因で発生します。具体的には、wait_timeout という名前の MySQL 変数に由来します。この変数は、接続を終了する前に MySQL がクライアントのアクティビティを辛抱強く待つ時間 (秒単位) を決定します。

デフォルトでは、共有ホストでは wait_timeout が 30 秒に設定されます。ただし、データベース操作がこの制限時間を超えると、接続が突然終了され、前述のエラーが発生します。

問題の解決: wait_timeout の調整

これを解決するにはこの問題では、データベース操作の期間に合わせて待機時間を延長する必要があります。これは、クエリ「SET session wait_timeout=28800」を発行することで実現できます。これにより、現在のセッションの wait_timeout が 28800 秒 (8 時間) に設定されます。

追加の考慮事項: インタラクティブ タイムアウト

特定のシナリオでは、wait_timeout と一緒に interactive_timeout 変数も変更する必要がある場合があります。この変数は、アイドル状態の対話型接続の最大継続時間を制御します。 interactive_timeout がオペレーションの実行時間より短い場合、接続は突然閉じられ、同じエラーが発生します。

実装: PHP コード

このソリューションを実装するにはPHP では、次のコード サンプルを利用します:

<code class="php">$results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE);
echo "<pre class="brush:php;toolbar:false">";
var_dump($results);
echo "
"; $results = $db->query("SET session wait_timeout=28800", FALSE); // UPDATE - this is also needed $results = $db->query("SET session interactive_timeout=28800", FALSE); $results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE); echo "
";
var_dump($results);
echo "
";

データベース操作を実行する前に、次の行を PHP スクリプトに追加してタイムアウト設定を調整します。これにより、「MySQL サーバーが消えました」エラーが発生することなく操作を完了できます。

以上がMySQL サーバーで「一般エラー: 2006 MySQL サーバーが消えました」というメッセージが表示され続けるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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