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

Bagaimana untuk Menyelesaikan Ralat 'Kekangan Kunci Asing Gagal' dalam MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-12-28 09:21:11287semak imbas

How to Resolve

Mengatasi Ralat "Kekangan Kunci Asing Gagal" dalam MySQL

Apabila menambahkan kunci asing pada jadual sedia ada yang merujuk yang lain, adalah penting untuk memastikan baris yang dirujuk wujud dalam jadual induk. Jika tidak, ralat "Tidak boleh menambah atau mengemas kini baris anak: kekangan kunci asing gagal" boleh berlaku.

Dalam kes yang disediakan, anda cuba menambah kunci asing (sourcecode_id) dalam jadual sourcecodes_tags yang merujuk jadual kod sumber. Walau bagaimanapun, berdasarkan pertanyaan SHOW CREATE TABLE anda, nampaknya tiada kunci asing yang ditakrifkan pada jadual sourcecodes_tags yang merujuk kepada jadual kod sumber.

Mesej ralat menunjukkan bahawa terdapat pelanggaran kunci asing, bermakna beberapa sourcecode_id nilai dalam jadual sourcecodes_tags tidak wujud dalam jadual sourcecodes. Untuk menyelesaikan isu ini, anda perlu mengenal pasti dan mengalih keluar rekod yatim tersebut.

Mengenalpasti Rekod Anak Yatim

Untuk mencari nilai sourcecode_id yang tidak wujud dalam jadual kod sumber, anda boleh menggunakan pertanyaan berikut:

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 nilai sourcecode_id yang bukan dikaitkan dengan mana-mana baris dalam jadual kod sumber.

Mengalih keluar Rekod Anak Yatim

Setelah anda mengenal pasti rekod yatim, anda boleh memadamkannya menggunakan pernyataan PADAM:

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 rekod yatim, anda sepatutnya boleh menambah kekangan kunci asing tanpa sebarang masalah.

ALTER TABLE sourcecodes_tags 
ADD FOREIGN KEY (sourcecode_id) 
REFERENCES sourcecodes (id) 
ON DELETE CASCADE ON UPDATE CASCADE;

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Kekangan Kunci Asing Gagal' dalam MySQL?. 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