Rumah >pangkalan data >tutorial mysql >Mengapa Saya Tidak Boleh Menjatuhkan Meja Ini? Kekangan Utama Asing Gagal Walaupun Tiada!

Mengapa Saya Tidak Boleh Menjatuhkan Meja Ini? Kekangan Utama Asing Gagal Walaupun Tiada!

DDD
DDDasal
2024-11-05 00:37:02552semak imbas

Why Can't I Drop This Table? Foreign Key Constraint Fails Even Though There Are None!

Kekangan Kunci Asing Bogus Gagal Teka-teki

Apabila cuba menjatuhkan jadual, anda menghadapi mesej ralat misteri: "Tidak boleh memadam atau mengemas kini baris induk: kekangan kunci asing gagal." Isu yang membingungkan ini timbul walaupun mengesahkan ketiadaan sebarang rujukan kunci asing dalam pangkalan data.

Menyiasat struktur jadual mendedahkan bahawa ia mempunyai kunci utama pada lajur "area_id" dan kunci unik pada lajur "nombre_area" . Ia menentang logik mengapa jadual ini akan menghalang proses pemadaman, memandangkan ketiadaan sebarang kekangan kunci asing dalam pangkalan data.

Setelah penerokaan selanjutnya, penemuan yang ingin tahu dibuat: menggunakan Pelayar Pertanyaan MySQL atau phpMyAdmin menghasilkan penciptaan sambungan berasingan untuk setiap pertanyaan, bertentangan dengan jangkaan. Ini memerlukan pelaksanaan semua pernyataan drop dalam satu pertanyaan untuk menyelesaikan isu.

Coretan kod berikut merangkumi penyelesaian ini:

SET FOREIGN_KEY_CHECKS=0;
DROP TABLE my_first_table_to_drop;
DROP TABLE my_second_table_to_drop;
SET FOREIGN_KEY_CHECKS=1;

Menetapkan FOREIGN_KEY_CHECKS kepada 0 melumpuhkan semakan kunci asing buat sementara waktu, membenarkan pemadaman jadual tanpa gangguan. Sebaik sahaja jadual digugurkan, FOREIGN_KEY_CHECKS ditetapkan semula kepada 1, memastikan kekangan kunci asing masa hadapan dikuatkuasakan.

Tingkah laku pelik ini menyerlahkan kepentingan menggunakan perintah SET FOREIGN_KEY_CHECKS untuk mengawal kekangan kunci asing secara dinamik, terutamanya apabila bekerja dengan alatan pengurusan pangkalan data yang mewujudkan berbilang sambungan bagi setiap pertanyaan.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menjatuhkan Meja Ini? Kekangan Utama Asing Gagal Walaupun Tiada!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn