如何修复“无法添加或更新子行:外键约束失败”[重复]

Posted

技术标签:

【中文标题】如何修复“无法添加或更新子行:外键约束失败”[重复]【英文标题】:How to fix "Cannot add or update a child row: a foreign key constraint fails" [duplicate] 【发布时间】:2019-12-31 11:46:00 【问题描述】:

我试图同时从 php.ini 插入两个表(父表和子表)。我就是这样编程的;我将一个唯一编号与我的原始数据一起插入到父表中,然后使用相同的唯一编号来获取我插入的最后一个数据,只是为了获取最近数据的“id”,这样我就可以在子表中使用它.它成功插入第一个表,但没有插入第二个表。我收到此错误:

无法添加或更新子行:外键约束失败 (attendance_db.attendance_tb, CONSTRAINT attendance_tb_ibfk_1 FOREIGN KEY (student_id) REFERENCES student_tb (id) ON DELETE CASCADE ON UPDATE级联)。

如何成功插入两个表?任何其他方法都将被接受。谢谢。

注意:我从 phpmyadmin 的设计器菜单中创建了关系。

【问题讨论】:

你能显示你的查询吗?顺便说一句,如果你使用PDO(你应该),你可以使用PDO::lastInsertId而不是使用“唯一编号” ***.com/questions/21659691/… 我不清楚唯一编号是什么以及您为什么要查找最后插入的 id 以插入孩子。 Hey Ermenegildo,这是我第一次听到或真正考虑 PDO,我会试一试 唯一编号是我使用 php 微秒生成的数字,它出现在我的代码中的原因是我可以使用它来查找具有该“唯一编号”的行的“id” "(因为两行不能有相同的微秒,因为我已经将它与另一个唯一数字连接起来)。我想从父表中获取“id”,然后在子表的外键中插入相同的“id” 【参考方案1】:

您的父表中似乎没有插入数据,或者您尝试用于插入子条目的 id 在父表中不存在。

请确保您要在子表中插入的外键必须在父表中可用(唯一/主 ID)。

谢谢

【讨论】:

数据实际插入到我的父表中,并且我正确地创建了具有相同信息的实体关系(只是列名不同) 子表中的外键也存在于父表中 @OlawaleOladiran 可能有以下问题: 1. 您正在尝试输入外键 0(但主键不同) 2. 可能存在数据类型限制问题,如果您 id -> int(11 ) 在具有 int(5) 的父表和子表中。在这种情况下。在这种情况下,可以输入多余的值,这将导致外键约束。

以上是关于如何修复“无法添加或更新子行:外键约束失败”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate:无法添加或更新子行:外键约束失败

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

无法添加或更新子行:外键约束失败

外键 Laravel 8 foreignId + 约束 - 无法添加或更新子行:外键约束失败

无法添加或更新子行:外键约束失败

Django“无法添加或更新子行:外键约束失败”