Ralat Mysql 1452: Menambah atau Mengemas kini Barisan Kanak-kanak Gagal Kerana Kekangan Kunci Asing
Apabila cuba menambah kunci asing pada jadual sourcecodes_tags merujuk jadual kod sumber, ralat berlaku: "Ralat Mysql 1452 - Tidak boleh menambah atau mengemas kini baris anak: kekangan kunci asing gagal."
Memahami Isu
Ralat ini biasanya menunjukkan bahawa nilai sourcecode_id yang terdapat dalam sourcecodes_tags tables lakukan tidak wujud sebagai nilai kunci primer yang sepadan (id) dalam jadual kod sumber. MySQL menguatkuasakan integriti rujukan, memastikan kunci asing merujuk kunci utama yang sah dalam jadual induk.
Menyelesaikan Ralat
Untuk menyelesaikan ralat ini, adalah perlu untuk mengenal pasti dan alih keluar nilai sourcecode_id orphan daripada jadual sourcecodes_tags. Jalankan pertanyaan berikut untuk mencari nilai kunci utama yang hilang:
SELECT DISTINCT sourcecode_id FROM sourcecodes_tags tags LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id WHERE sc.id IS NULL;
Pertanyaan ini akan mengembalikan senarai nilai sourcecode_id yang tidak terdapat dalam jadual kod sumber. Setelah dikenal pasti, nilai yatim ini boleh dialih keluar menggunakan pernyataan DELETE:
DELETE FROM sourcecodes_tags WHERE sourcecode_id IN (SELECT DISTINCT sourcecode_id FROM sourcecodes_tags tags LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id WHERE sc.id IS NULL);
Selepas mengalih keluar nilai yatim, laksana semula pernyataan ALTER TABLE untuk menambah kunci asing:
ALTER TABLE sourcecodes_tags ADD FOREIGN KEY (sourcecode_id) REFERENCES sourcecodes (id) ON DELETE CASCADE ON UPDATE CASCADE;
Ini sepatutnya berjaya mencipta kekangan kunci asing tanpa sebarang ralat.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat MySQL 1452: Kekangan Kunci Asing Gagal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!