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

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

Barbara Streisand
リリース: 2024-11-19 12:49:02
オリジナル
597 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート