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

Ralat MySQL 1452: Bagaimana untuk Menyelesaikan Pelanggaran Kekangan Utama Asing?

Patricia Arquette
Patricia Arquetteasal
2024-12-28 02:11:10532semak imbas

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

Pelanggaran Kekangan Kunci Asing MySQL: Ralat 1452

Apabila cuba mewujudkan kekangan kunci asing antara dua jadual, anda mungkin menghadapi ralat " Ralat Mysql 1452 - Tidak boleh menambah atau mengemas kini baris anak: kekangan kunci asing gagal." Ralat ini menunjukkan bahawa ketidakkonsistenan wujud antara jadual yang dirujuk dan rujukan.

Memeriksa kenyataan CREATE TABLE untuk kedua-dua jadual mendedahkan perkara berikut:

  • jadual kod sumber: Mengandungi kekangan kunci asing yang merujuk beberapa jadual lain (bahasa, pengguna, kategori).
  • sourcecodes_tags jadual: Mengandungi kekangan kunci asing yang merujuk kepada jadual kod sumber.

Ralat berlaku secara khusus apabila cuba menambah kekangan kunci asing daripada sourcecodes_tags kepada sourcecodes.

Untuk menyelesaikan ralat ini, kemungkinan besar jadual sourcecodes_tags mengandungi nilai untuk sourcecode_id yang tidak lagi wujud dalam sourcecodes table.

Untuk mengenal pasti nilai yang tidak konsisten ini, laksanakan 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 senarai sourcecode_id nilai daripada sourcecodes_tags yang tidak sepadan dengan mana-mana entri yang sah dalam kod sumber. Dengan mengalih keluar nilai yang tidak konsisten ini daripada sourcecodes_tags, kekangan kunci asing boleh diwujudkan dengan jayanya.

Atas ialah kandungan terperinci Ralat MySQL 1452: Bagaimana untuk Menyelesaikan Pelanggaran Kekangan Utama Asing?. 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