Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Ralat MySQL 1452: Kekangan Kunci Asing Gagal?

Bagaimana untuk Menyelesaikan Ralat MySQL 1452: Kekangan Kunci Asing Gagal?

Susan Sarandon
Susan Sarandonasal
2024-12-23 11:17:14770semak imbas

How to Resolve MySQL Error 1452: Foreign Key Constraint Fails?

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!

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