Panduan Penyelesaian Ralat Kekangan Kunci Asing MySQL
Pengenalan
Apabila mewujudkan kekangan kunci asing untuk jadual dalam pangkalan data, ralat mungkin ditemui semasa penciptaan atau pengubahsuaian. Satu ralat sedemikian ialah "ERROR 1215 (HY000): Tidak boleh menambah kekangan kunci asing".
Kes: Isu kekangan utama asing dalam jadual Pesakit dan Janji Temu
Pertanyaan SQL berikut mengalami ralat semasa cuba menambah kekangan kunci asing pada jadual Pesakit dan Janji Temu:
<code class="language-sql">CREATE TABLE IF NOT EXISTS `doctorsoffice`.`Patient` ( ... CONSTRAINT `FK_MedicalHistory` FOREIGN KEY (`MedicalHistory`) REFERENCES `doctorsoffice`.`medicalhistory` (`MedicalHistoryID`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `FK_PrimaryPhysician` FOREIGN KEY (`PrimaryPhysician`) REFERENCES `doctorsoffice`.`doctor` (`DoctorID`) ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE IF NOT EXISTS `doctorsoffice`.`Appointment` ( ... CONSTRAINT `FK_Patient` FOREIGN KEY (`Patient`) REFERENCES `doctorsoffice`.`Patient` (`PatientID`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `FK_Doctor` FOREIGN KEY (`Doctor`) REFERENCES `doctorsoffice`.`doctor` (`DoctorID`) ON DELETE CASCADE ON UPDATE CASCADE );</code>
Penyelesaian: Sahkan keserasian jenis data
Untuk menyelesaikan isu ini, sahkan bahawa jenis data lajur yang terlibat dalam kekangan kunci asing adalah serasi. Dalam kes ini, pastikan anda:
Selepas membetulkan ketidakpadanan jenis data ini, anda boleh berjaya menambah kekangan kunci asing.
Petua Tambahan: Lumpuhkan pemeriksaan kunci asing
Untuk menambah lebih fleksibiliti semasa membuat jadual dalam susunan tertentu, pertimbangkan untuk menggunakan arahan berikut sebelum melaksanakan pertanyaan SQL:
<code class="language-sql">SET foreign_key_checks=0;</code>
Arahan ini melumpuhkan semakan kunci asing buat sementara waktu, membenarkan jadual dibuat tanpa mengira kebergantungan jadual ibu bapa-anak. Selepas jadual dibuat, semakan kunci asing boleh didayakan semula menggunakan arahan berikut:
<code class="language-sql">SET foreign_key_checks=1;</code>
Dengan mengikuti garis panduan ini, anda boleh memastikan bahawa kekangan kunci asing dilaksanakan dengan betul dalam pangkalan data anda, mencegah ralat dan mengekalkan integriti data.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Masalah 'Tidak boleh menambah kekangan kunci asing' Ralat dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!