PDO ループの「MySQL Server Has Gone Away」エラーを解決する方法
ループを実行する PDO ベースのスクリプトを含むシナリオの場合準備されたステートメントでは、「MySQL サーバーが消えました」エラーで実行が失敗することが発生しました。スクリプトの整合性を維持するには、根本的な原因を理解し、解決策を実装することが重要です。
エラーは通常、サーバーに送信されたパケットが最大許容パケット サイズを超えたときに発生します。これは、大きな BLOB (Binary Large OBject) データの挿入が試行されたときに発生する可能性があります。
問題の原因を特定するには、クライアント側とサーバー側の両方のエラー メッセージを調べることをお勧めします。クライアント側では、前述のエラー メッセージが表示されますが、サーバー ログには「エラー 1153 'max_allowed_packet' バイトより大きいパケットを取得しました。」と表示される場合があります。
解決には、my.ini の max_allowed_packet 値を調整する必要があります。最大の BLOB のサイズに合わせてファイルを作成します。この値は、予想される BLOB 挿入よりも大きくなるように、それに応じて設定する必要があります。
たとえば、my.ini の次のエントリは、最大パケット サイズを 200 メガバイトに設定します。
[mysqld] ... max_allowed_packet = 200M ...
この変更を実装することで、スクリプトは「MySQL サーバーが消えました」エラーが発生することなく、プリペアド ステートメントのループを正常に実行できるようになります。
以上がPDO ループで「MySQL Server Has Gone Away」エラーがスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。