Menyelesaikan Masalah Ralat Kekangan Kunci Asing MySQL
Kekangan kunci asing (FK) MySQL memastikan integriti data dengan memautkan jadual. Walau bagaimanapun, penambahan FK kadangkala boleh menghasilkan ralat. Panduan ini membantu menyelesaikan isu biasa "Tidak boleh menambah kekangan kunci asing".
Masalahnya:
Apabila menambahkan kekangan FK antara jadual Patient
dan Appointment
, anda mungkin menghadapi ralat ini:
<code>ERROR 1215 (HY000): Cannot add foreign key constraint</code>
Mencari Punca:
Untuk mendiagnosis masalah, gunakan arahan ini:
<code class="language-sql">SHOW ENGINE INNODB STATUS;</code>
Periksa dengan teliti bahagian "KESILAPAN KUNCI ASING TERKINI" pada output.
Penyelesaian:
Punca yang kerap berlaku ialah ketidakpadanan jenis data antara lajur anak dan induk. Contohnya:
Patient.MedicalHistory
(kanak-kanak) mungkin SMALLINT
.medicalhistory.MedicalHistoryID
(ibu bapa) mungkin INT
.Pembetulan? Pastikan jenis data lajur anak tepat padan dengan jenis data lajur induk. Dalam senario ini, tukar Patient.MedicalHistory
kepada INT
.
Amalan Disyorkan:
Sebelum mencipta jadual dengan FK, jalankan arahan ini:
<code class="language-sql">SET FOREIGN_KEY_CHECKS=0;</code>
Ini membolehkan anda membuat jadual dalam sebarang susunan tanpa ralat kekangan FK kerana jadual induk hilang. Ingat untuk mendayakan semula semakan FK selepas itu:
<code class="language-sql">SET FOREIGN_KEY_CHECKS=1;</code>
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menambah Kekangan Utama Asing dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!