MySQL 外鍵約束錯誤故障排除
MySQL 的外鍵 (FK) 約束透過連結表來確保資料完整性。 但是,添加 FK 有時會產生錯誤。本指南有助於解決常見的「無法新增外鍵約束」問題。
問題:
在Patient
和Appointment
表之間新增FK約束時,您可能會遇到以下錯誤:
<code>ERROR 1215 (HY000): Cannot add foreign key constraint</code>
找出原因:
要診斷問題,請使用以下指令:
<code class="language-sql">SHOW ENGINE INNODB STATUS;</code>
仔細檢查輸出的「LATEST FOREIGN KEY ERROR」部分。
解:
一個常見的原因是子列和父列之間的資料類型不符。例如:
Patient.MedicalHistory
(孩子)可能是SMALLINT
。 medicalhistory.MedicalHistoryID
(家長)可能是 INT
。 修復? 確保子列的資料類型與父列的資料類型精確匹配。 在這種情況下,將 Patient.MedicalHistory
更改為 INT
。
建議做法:
在使用 FK 建立表格之前,請執行以下命令:
<code class="language-sql">SET FOREIGN_KEY_CHECKS=0;</code>
這允許您以任意順序建立表,而不會因缺少父表而導致 FK 約束錯誤。 請記住之後重新啟用 FK 檢查:
<code class="language-sql">SET FOREIGN_KEY_CHECKS=1;</code>
以上是為什麼MySQL無法加入外鍵約束?的詳細內容。更多資訊請關注PHP中文網其他相關文章!