MySQL 外鍵約束錯誤排查指南
引言
在資料庫中建立表格的外鍵約束時,建立或修改過程中可能會遇到錯誤。其中一個錯誤是「ERROR 1215 (HY000): Cannot add foreign key constraint」。
案例:Patient 和 Appointment 表中的外鍵約束問題
以下 SQL 查詢在嘗試為 Patient 和 Appointment 資料表新增外鍵約束時發生錯誤:
<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>
解決方案:驗證資料類型相容性
要解決此問題,請驗證外鍵約束中涉及的列的資料類型是否相容。在本例中,務必確保:
修正這些資料類型不符後,即可成功新增外鍵約束。
附加提示:停用外鍵檢查
為了在建立表格時按特定順序添加更多彈性,請考慮在執行 SQL 查詢之前使用以下命令:
<code class="language-sql">SET foreign_key_checks=0;</code>
此指令暫時停用外鍵檢查,允許建立表,而不管父子表依賴關係。表格建立完畢後,可以使用以下指令重新啟用外鍵檢查:
<code class="language-sql">SET foreign_key_checks=1;</code>
遵循這些指導原則,您可以確保外鍵約束在資料庫中正確實現,從而防止錯誤並維護資料完整性。
以上是如何解決 MySQL 中的「無法新增外鍵約束」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!