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中文网其他相关文章!