Ralat ini berlaku apabila cuba melaksanakan berbilang pertanyaan serentak semasa menggunakan PDO dengan PDO::ATTR_EMULATE_PREPARES ditetapkan kepada palsu. Ia menunjukkan bahawa pelayan MySQL tidak dapat mengendalikan melaksanakan pertanyaan tambahan sehingga semua pertanyaan yang tidak ditimbal sebelum ini telah diambil.
Tingkah laku lalai PDO adalah untuk meniru pernyataan yang disediakan dengan menterjemahkannya ke dalam pertanyaan yang tidak ditimbal . Pertanyaan yang tidak ditimbal dilaksanakan serta-merta, dan hasilnya tidak disimpan di sebelah klien. Ini membolehkan pengendalian cekap memori bagi set hasil yang besar.
Walau bagaimanapun, apabila beroperasi dalam mod ini, MySQL mengenakan sekatan yang menghalang pelaksanaan pertanyaan berikutnya semasa pertanyaan yang tidak ditimbal masih dalam proses. Di sinilah ralat 2014 bermula.
Terdapat beberapa pendekatan untuk menyelesaikan ralat ini:
Untuk prestasi dan kecekapan optimum, adalah disyorkan untuk menggunakan pertanyaan buffer apabila mengendalikan set hasil yang besar atau apabila konkurensi adalah kritikal. FetchAll() atau closeCursor() hendaklah digunakan selepas setiap pelaksanaan pertanyaan tidak buffer untuk melepaskan sumber pelayan. Selain itu, penggunaan mysqlnd amat digalakkan untuk ketersambungan dan prestasi MySQL yang lebih baik.
Atas ialah kandungan terperinci Mengapa Ralat MySQL 2014 Berlaku Apabila Melaksanakan Pertanyaan Serentak dengan PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!