"Kekangan Kunci Asing Bogus Gagal" Enigma: Meneroka Ralat Tidak Dijangka
Apabila melaksanakan pernyataan DROP TABLE pada jadual kawasan, pengguna boleh menghadapi ralat misteri: "Tidak boleh memadam atau mengemas kini baris induk: kekangan kunci asing gagal." Isu yang kelihatan membingungkan ini timbul walaupun selepas bersungguh-sungguh mengalih keluar semua jadual lain dengan rujukan kunci asing ke kawasan.
Menyelidiki butiran jadual kawasan, ia mempunyai kunci utama (area_id), kunci unik (nombre_area_UNIQUE), dan koleksi lajur bukan nol. Memandangkan jadual InnoDB direka bentuk untuk menghalang kekangan kunci asing merentas skema yang berbeza, kehadiran kunci asing daripada jadual yang tidak wujud menjadi satu teka-teki.
Walau bagaimanapun, pokok isu terletak pada perisian khusus yang digunakan. Apabila menggunakan Pelayar Pertanyaan MySQL atau phpMyAdmin, ciri yang ketara timbul: setiap pertanyaan memulakan sambungan baharu. Keanehan ini memaksa pengguna untuk merangkumi keseluruhan siri pernyataan drop dalam satu pertanyaan.
Untuk membetulkan keadaan dengan berkesan, urutan pernyataan berikut boleh digunakan:
<code class="sql">SET FOREIGN_KEY_CHECKS=0; DROP TABLE my_first_table_to_drop; DROP TABLE my_second_table_to_drop; SET FOREIGN_KEY_CHECKS=1;</code>
Dengan menggunakan SET FOREIGN_KEY_CHECKS=0, kekangan kunci asing dilumpuhkan buat sementara waktu, memudahkan pemadaman jadual sasaran. Selepas itu, mendayakan semula kekangan dengan SET FOREIGN_KEY_CHECKS=1 menyediakan lapisan perlindungan tambahan. Oleh itu, ralat berulang dielakkan, membolehkan pengguna berjaya menjatuhkan jadual yang dimaksudkan.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Kekangan Kunci Asing Gagal' Apabila Menggugurkan Jadual dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!