「他のバッファリングされていないクエリがアクティブである間はクエリを実行できません」エラーの原因を理解する
MySQL では、クライアント プロトコルにより複数のクエリの実行が制限されています。 1 つ以上のバッファされていないクエリが部分的な結果を要求する場合、同時にクエリを実行します。前のクエリがまだデータを生成している間に 2 番目のクエリを実行しようとすると、「バッファされていない他のクエリがアクティブである間はクエリを実行できません」エラーが発生します。
問題の原因
メモリ使用量を最適化するために、MySQL クライアント ライブラリは通常、最初のクエリのすべての結果を内部で取得し、サーバー カーソルの順次フェッチと解放を可能にします。ただし、クエリが完全にフェッチされていない場合、MySQL サーバーが「アクティブ カーソル」状態を維持するため、後続のクエリでエラーが発生します。
PDO::ATTR_EMULATE_PREPARES
設定の影響PDO::ATTR_EMULATE_PREPARES を false に設定すると、自動クエリ バッファリングが無効になります。つまり、フェッチされた結果は MySQL サーバーから直接取得されます。その結果、最初のクエリから取得されていない結果が続くと、前述のエラーが発生する可能性があります。
エラーを解決する方法
追加の考慮事項
以上がMySQL の「他のバッファされていないクエリがアクティブである間はクエリを実行できません」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。