如何修复“无法添加或更新子行:外键约束失败”[重复]
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
, CONSTRAINTattendance_tb_ibfk_1
FOREIGN KEY (student_id
) REFERENCESstudent_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) 的父表和子表中。在这种情况下。在这种情况下,可以输入多余的值,这将导致外键约束。以上是关于如何修复“无法添加或更新子行:外键约束失败”[重复]的主要内容,如果未能解决你的问题,请参考以下文章
MySql 重启后:#1452 - 无法添加或更新子行:外键约束失败