MySQL 不能用 FK 约束插入

Posted

技术标签:

【中文标题】MySQL 不能用 FK 约束插入【英文标题】:MySQL cannot INSERT with FK constraint 【发布时间】:2012-02-22 17:12:57 【问题描述】:

当我尝试插入一些数据时收到以下错误消息:

SQLSTATE[23000]:违反完整性约束:1452 无法添加或 更新子行:外键约束失败 (database/UserDetails, 约束UserDetails_ibfk_6 外国 键 (HearAboutID) 引用 UserDetails (HearAboutID) 删除 更新级联时级联)

FK 关系如下所示:

我试图输入到UserDetails.HearAboutID 的数据存在于UserHearAbout.UserHearAboutID... 那为什么不去呢? :(

【问题讨论】:

能否请您包含您正在使用的 SQL?还要仔细检查您是否没有在表之间使用 FK 创建某种循环引用。 【参考方案1】:

根据您发布的错误

外键 (HearAboutID) REFERENCES UserDetails (HearAboutID) ON DELETE CASCADE ON UPDATE CASCADE)

(您实际上创建了一个引用同一表和同一列的约束), 我猜你的 FK 约束定义是错误的(应该是

 FOREIGN KEY (HearAboutID) REFERENCES UserHearAbout (UserHearAboutID)
ON DELETE CASCADE ON UPDATE CASCADE)

【讨论】:

卫生署!我不敢相信我做到了。小学生错误!非常感谢。

以上是关于MySQL 不能用 FK 约束插入的主要内容,如果未能解决你的问题,请参考以下文章

QueryFailedError:在表“graph”上插入或更新违反了外键约束“FK_0e40......”

MySQL插入数据因外键约束失败?

百万年薪python之路 -- MySQL数据库之 完整性约束

MySQL 从分配自动增量 ID 的表插入并更新第三个表中的 FK

MySQL 列约束

如何在不将实例模型添加到数据库的情况下向实体模型添加FK约束?