Punca Ralat MySQL 2014: Tidak Dapat Melaksanakan Pertanyaan dengan Pertanyaan Tidak Dibuffer Aktif
Ralat ini timbul apabila cuba melaksanakan berbilang pertanyaan tanpa menimbal yang pertama pertanyaan. Protokol klien MySQL melarang melaksanakan dua pertanyaan serentak.
Butiran Ralat
- Punca: Pertanyaan yang tidak ditimbal membiarkan baris pertanyaan sebelumnya tidak diambil, menghalang pertanyaan berikutnya daripada melaksanakan.
- Simptom: MySQL mengembalikan ralat 2014, menyatakan bahawa pertanyaan tidak boleh dilaksanakan apabila pertanyaan yang tidak ditimbal aktif.
Penyelesaian
-
Gunakan Pertanyaan Buffered: Secara lalai, PDO meniru kenyataan yang disediakan, menghasilkan pertanyaan yang tidak ditimbal. Tetapkan PDO::ATTR_EMULATE_PREPARES=false untuk mendayakan pertanyaan penimbal.
-
Gunakan PDOStatement::fetchAll(): Mengambil semua hasil pertanyaan pertama secara tersirat menimbalnya, membenarkannya pertanyaan seterusnya kepada laksanakan.
-
CloseCursor(): Menutup kursor pertanyaan secara manual membebaskan sumber pada pelayan dan membenarkan pertanyaan seterusnya dilaksanakan. Walau bagaimanapun, ia hanya boleh digunakan apabila semua baris yang diperlukan telah diambil.
Pertimbangan Tambahan
- Tutup kursor dengan segera untuk mengelakkan potensi masalah penggunaan memori .
- Gunakan parameter bernama dan bukannya parameter kedudukan untuk kemudahan penggunaan dengan PDO.
- Tukar ke perpustakaan mysqlnd untuk prestasi dan fleksibiliti yang lebih baik.
Ingat, pelaksanaan pertanyaan yang betul dan teknik pengurusan sumber adalah penting untuk mengelakkan ralat ini dan memastikan operasi pangkalan data yang cekap.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat MySQL 2014: \'Tidak Dapat Melaksanakan Pertanyaan dengan Pertanyaan Tanpa Penimbalan Aktif\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!