接收错误 #1452 - 无法添加或更新子行”

Posted

技术标签:

【中文标题】接收错误 #1452 - 无法添加或更新子行”【英文标题】:Receving error #1452 - Cannot add or update a child row" 【发布时间】:2019-11-18 13:04:27 【问题描述】:

我正在尝试将我创建的数据库中的 2 个表链接在一起。但我收到 #1452 - 无法添加或更新子行错误。

有趣的是,它允许我在表为空时建立 fk-pk 关系,但是当我使用 csv 将数据传递到表时出现错误。当我第一次建立关系然后尝试导入数据时,我得到了这次添加的错误。

是什么原因?

SQL 查询:

ALTER TABLE `kickstarter` ADD  FOREIGN KEY (`country_num`) REFERENCES `kickstarter_countries`(`country_id`) ON DELETE RESTRICT ON UPDATE RESTRICT;

mysql 输出:

1452 - 无法添加或更新子行:外键约束失败 (htimurat_data_analytics.#sql-f8c5_6a687, CONSTRAINT #sql-f8c5_6a687_ibfk_1 FOREIGN KEY (country_num) REFERENCES kickstarter_countries (country_id))

【问题讨论】:

您是使用phpMyAdmin Designer界面创建关系还是表格结构区域下的Relation view tab? @Isaac Bennetch 我也使用了 phpmyadmin 的设计器模式。但我在那里得到同样的错误。我的问题没有解决。 在这种情况下,您的问题似乎与 phpMyAdmin 无关。这是 ***.com/a/56989783/2385479 的副本 - 看起来您正在尝试强制执行该关系,但与父表中的一个或多个值不匹配。 没错!我解决了我的问题。如果其中一个表中存在链接在一起的数据,则另一个表也必须链接这些表。当我将数据输入到要链接的表中时,问题就解决了。 @IsaacBennech 很高兴这是解决方案。我把我的评论变成了一个答案,这在 Stack Overflow 世界中意味着(如果你愿意的话)你可以将它标记为已接受,以便其他人可以从这次交流中受益。 【参考方案1】:

您似乎正在尝试强制执行该关系,但与父表中的一个或多个值不匹配。相互关联的数据必须存在于两个表中,否则您会收到错误消息。您需要先清理表中的数据,然后才能强制执行关系。

【讨论】:

以上是关于接收错误 #1452 - 无法添加或更新子行”的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 外键约束 - 错误 1452 - 无法添加或更新子行

SQL 错误:SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败

完整性约束违规:1452 无法将子行添加或更新到我的数据库中

完整性约束违规:1452 无法添加或更新子行:

Magento DB错误:完整性约束违规:1452无法添加或更新子行:外键约束失败

MySql 重启后:#1452 - 无法添加或更新子行:外键约束失败