【问题标题】:MySQL : Cannot add or update a child row: a foreign key constraint failsMySQL:无法添加或更新子行:外键约束失败
【发布时间】:2016-08-09 18:03:07
【问题描述】:

我有错误:

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

这是我的插入查询:

INSERT INTO `swat` (`Category`, `Importance_JK`, `MaxStrength`, `Person_id`, `SWAT_id`, `Strength`, `cost`, `date_Complete`, `due_Date`, `storage_id`, `updated`, `user_FK`) 
    VALUES ('1','2','we1','546','46','we','500','2016-04-19','2016-04-18','','2016-04-18','37')

如果我在 SQL 中打印此查询,则会出现此 MySql 错误:

#1452 - 无法添加或更新子行:外键约束失败 (`sidemoin_crucialstuff`.`swat`, CONSTRAINT `swat_ibfk_3` FOREIGN KEY (`Person_id`) REFERENCES `key_people` (`Key_Person_ID`))

有什么帮助吗?

【问题讨论】:

  • 请出示你的ddl
  • [ALTER TABLE swat 添加约束 swat_ibfk_1 外键 (Importance_JK) 引用 tbl_importance (I_ID),添加约束 swat_ibfk_2 外键@987654 987654329 @(user_ID),添加约束swat_ibfk_3外键(key_peopleKey_Person_ID),添加约束swat_ibfk_4 foright key Categoryswat_categorysc_ID ); ]
  • 请勿将其添加为评论。使用编辑功能将其添加到您的问题中

标签: mysql sql codeigniter


【解决方案1】:

您收到此错误是因为您的外键值没有被插入。所以您可以做一件事,请在数据库中的 FK 列指定空值,然后尝试运行查询并检查

【讨论】:

  • Thnx 回答 @aarju mishra,但我已经在 FK 列的 DB 中将其设置为 NULL
【解决方案2】:

您收到此错误是因为外键约束。

您已从key_people 表中添加了对Person_id 的引用。现在,您在 Person_id 字段中添加的每个值必须出现在 key_people 表中。因为您是 referencing 表中的值。

因此,在向swat 表插入任何值之前,请确保您已在引用表中插入了所需的值。否则它会一直抛出外键约束错误。

您还可以做的是首先检查引用表中是否存在该值,如果没有,则将 NULL 值添加到相应的列中。

注意:对于上述解决方案,您必须在那些 引用列加上这将不是一个完美的解决方案,如果你 计划根据外键获取数据。

【讨论】:

    【解决方案3】:

    您有一个参考 b/w Person_id 和 Key_People。

    这称为父子关系。

    在插入子表之前,该值必须存在于父表中。 因此,在插入 Swat 之前,您必须在父表中插入值:)

    【讨论】:

      猜你喜欢
      • 2015-07-26
      • 2012-10-09
      • 2015-06-06
      • 2011-03-31
      • 2013-08-10
      • 1970-01-01
      • 2016-05-23
      • 2012-03-14
      • 1970-01-01
      相关资源
      最近更新 更多