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
Lepaskan: 2024-12-23 11:17:14
asal
769 orang telah melayarinya

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;
Salin selepas log masuk

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);
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan