ホームページ >データベース >mysql チュートリアル >MySQL 接続が「MySQL Server Has Gone Away」エラーで切断され続けるのはなぜですか?

MySQL 接続が「MySQL Server Has Gone Away」エラーで切断され続けるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-19 12:49:02528ブラウズ

Why Does My MySQL Connection Keep Dropping with the

「MySQL Server Has Gone Away」エラーについて理解する

PDO プリペアド ステートメントを繰り返し実行するスクリプトを使用する場合、 「MySQL サーバーが消えました」というエラー。このエラーは、特に MySQL バージョン 5.0.77 および PHP バージョン 5.2.12 を使用する環境で、一定回数の実行が成功した後によく発生します。

エラーの原因:

この問題の根本原因は、MySQL サーバーで許可されている最大パケット サイズを超えていることにあります。たとえば、大きな BLOB オブジェクトを挿入すると、パケット サイズが設定された制限を超える可能性があります。

クライアントおよびサーバー ログのエラー メッセージ:

クライアント側では、エラーは「MySQL サーバーが消えました」として現れます。サーバー ログ (エラー ログが有効な場合) に、次のメッセージが表示される場合があります:

Error 1153 Got a packet bigger than 'max_allowed_packet' bytes

解決策:

このエラーを修正するには、次の手順を実行する必要があります。 MySQL 構成ファイル (my.ini など) の max_allowed_pa​​cket 設定を調整します。方法は次のとおりです。

  1. 挿入する予定の BLOB オブジェクトの最大サイズを特定します。
  2. MySQL 構成ファイルを開いて、[mysqld] セクションを見つけます。
  3. 追加セクションに次の行を追加します:
max_allowed_packet = [SIZE]

ここで、[SIZE] は希望する最大パケット サイズ (バイト単位) です。たとえば、最大パケット サイズを 200 メガバイトに設定するには:

[mysqld]
...
max_allowed_packet = 200M
...
  1. 構成ファイルを保存し、MySQL を再起動します。

追加の考慮事項:

  • 使用後に開いている接続またはプリペアドステートメントが適切に閉じられていることを確認してください。
  • 引き続き問題が発生する場合は、net_write_timeout や connect_timeout などの他の MySQL 設定を確認してください。
  • 大きなデータ パケットをより堅牢に処理できる可能性があるため、MySQL と PHP の新しいバージョンにアップグレードすることを検討してください。

以上がMySQL 接続が「MySQL Server Has Gone Away」エラーで切断され続けるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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