gpt4 book ai didi

mysql - 无法添加或更新子行: a foreign key constraint fails

转载 作者:行者123 更新时间:2023-11-30 00:18:43 25 4
gpt4 key购买 nike

#1452 - Cannot add or update a child row: a foreign key constraint fails (robot.specifications, CONSTRAINT specifications_ibfk_1 FOREIGN KEY (Product_code) REFERENCES product shipment (Product_code))

我是新手,我真的不知道我在这里得到什么!? :oo

我几乎 100% 确定我在其他表中正确定义了主键和外键。

谁能用母语英语告诉我,我在这里做错了什么?

最佳答案

引用表中不存在的值可能会导致此问题。在包含数据的表中设置外键约束时,我不止一次遇到过这种情况。

此问题的解决方案是找到对不存在的行的引用并将其删除。完成此操作后,如果语法和表定义正确,则约束应该起作用。

Table : Country
cid | Name | Comment
---------------------------------
1 | Japan | xyz
2 | USA | pqr
3 | India | abc
4 | Germany | lmn
30 | France | pqr

Table : Language
lid | country_id | lang_name
---------------------------------
101 | 1 | Japanese
901 | 2 | Engligh
291 | 3 | Hindi
678 | 4 | German
283 | 30 | French
827 | 9 | Russian

我们可以看到 Language reff#827 指的是国家 reff#9,但我们的国家表没有这个值。没有[9 |俄罗斯 | ghk ] 那里。

尝试创建外键约束将失败并出现以下错误

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test_db`.`#sql-4ae_1f19e`, CONSTRAINT `country_ID_fk` FOREIGN KEY (`country_id`) REFERENCES `country` (`cid`))

解决方案:我们需要找到所有不存在的引用并手动删除它们。这对于小 table 来说很简单。对于包含大量数据的表,请使用以下查询来查找所有不存在的引用:

select country_id,(select count(*) from country where country_id = cid) from language WHERE country_id*(select count(*) from country where country_id = cid) = 0 ;

这将列出所有不存在的引用。删除引用后,可以使用命令创建约束:

ALTER TABLE language ADD CONSTRAINT country_if_fk FOREIGN KEY (country_id) REFERENCES country(`cid`); 

关于mysql - 无法添加或更新子行: a foreign key constraint fails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23427667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com