Memahami Punca Ralat "Tidak Boleh Melaksanakan Pertanyaan Semasa Pertanyaan Tidak Dibuffer Lain Aktif"
Dalam MySQL, protokol klien mengehadkan pelaksanaan berbilang pertanyaan serentak apabila satu atau lebih pertanyaan yang tidak ditimbal meminta hasil separa. Apabila cuba melaksanakan pertanyaan kedua manakala pertanyaan sebelumnya masih menghasilkan data, ralat "Tidak boleh melaksanakan pertanyaan semasa pertanyaan tidak buffer lain aktif" berlaku.
Akar Isu
Untuk mengoptimumkan penggunaan memori, perpustakaan klien MySQL lazimnya mendapatkan semula semua hasil pertanyaan awal secara dalaman, membenarkan pengambilan berurutan dan melepaskan kursor pelayan. Walau bagaimanapun, jika pertanyaan tidak diambil sepenuhnya, pertanyaan berikutnya menghadapi ralat kerana pelayan MySQL mengekalkan keadaan "kursor aktif".
Kesan PDO::ATTR_EMULATE_PREPARES
Tetapan PDO::ATTR_EMULATE_PREPARES kepada palsu melumpuhkan penimbalan pertanyaan automatik, bermakna hasil yang diambil diambil daripada pelayan MySQL secara langsung. Akibatnya, ralat yang disebutkan di atas boleh berlaku jika hasil yang tidak diambil daripada pertanyaan awal berterusan.
Cara Menyelesaikan Ralat
Pertimbangan Tambahan
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'Tidak Dapat Melaksanakan Pertanyaan Semasa Pertanyaan Tidak Dibuffer Lain Aktif\' dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!