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
Lepaskan: 2024-12-28 09:21:11
asal
271 orang telah melayarinya

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

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

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

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!

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