Rumah >pangkalan data >tutorial mysql >Mengapa MySQL Throw 'Tidak boleh menambah atau mengemas kini baris anak: kekangan kunci asing gagal' (Ralat 1452)?

Mengapa MySQL Throw 'Tidak boleh menambah atau mengemas kini baris anak: kekangan kunci asing gagal' (Ralat 1452)?

Susan Sarandon
Susan Sarandonasal
2024-12-21 00:01:11148semak imbas

Why Does MySQL Throw

Isu Kekangan Kunci Asing MySQL: Tidak Dapat Menambah atau Mengemas kini Barisan Kanak-kanak

Apabila cuba mewujudkan kekangan kunci asing dalam jadual MySQL, anda mungkin menghadapi ralat 1452: "Tidak boleh menambah atau mengemas kini baris anak: kekangan kunci asing gagal." Isu ini berlaku apabila baris anak dalam satu jadual merujuk baris induk yang tidak lagi wujud dalam jadual lain.

Dalam senario yang disediakan, anda cuba menambah kunci asing dalam jadual sourcecodes_tags yang merujuk kepada jadual kod sumber. Walau bagaimanapun, mesej ralat menunjukkan bahawa terdapat rekod yatim dalam jadual sourcecodes_tags yang merujuk kepada baris yang tidak wujud dalam jadual kod sumber.

Untuk menyelesaikan isu ini, anda perlu mengenal pasti rekod yang yatim itu terlebih dahulu. Anda boleh menggunakan pertanyaan berikut untuk mendapatkan semula rekod ini:

SELECT DISTINCT sourcecode_id 
FROM sourcecodes_tags tags 
LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id 
WHERE sc.id IS NULL;

Setelah anda mengenal pasti rekod yatim, anda boleh mengalih keluarnya daripada jadual sourcecodes_tags. Ini akan membolehkan anda berjaya menambah kekangan kunci asing.

Adalah penting untuk memastikan integriti rujukan dalam jadual pangkalan data anda dengan menguatkuasakan kekangan kunci asing. Kekangan ini menghalang ketidakkonsistenan data dan mengekalkan hubungan antara jadual. Dengan menangani rekod yatim, anda boleh menyelesaikan ralat 1452 dan mewujudkan hubungan yang betul antara jadual pangkalan data anda.

Atas ialah kandungan terperinci Mengapa MySQL Throw 'Tidak boleh menambah atau mengemas kini baris anak: kekangan kunci asing gagal' (Ralat 1452)?. 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