我有两张已经存在的table, bar
(有2列, id
[int 11]和 name
)以及 foo_bar
(3列, id
, foo_id
以及 bar_id
[内景11])(还有一张table foo
但这与此无关。)
我想将迁移添加到 foo_bar
所以当一行从 bar
它删除中的相关行 foo_bar
. 这是我的声明:
ALTER TABLE `foo_bar` ADD FOREIGN KEY (`bar_id`) REFERENCES `bar`(`id`) ON DELETE CASCADE
但是当我运行这个时,我得到了一个错误:
1452-无法添加或更新子行:外键约束失败( dbn
. #sql-1_10ad
,约束 #sql-1_10ad_ibfk_1
外键( bar_id
)参考文献 bar
( id
)删除时(级联)
两者 bar_id
以及 id
上 bar
表的类型为 int(11)
. id
上 bar
表是主键。
2条答案
按热度按时间imzjd6km1#
我猜有外键
bar_id
指的是id
在bar
不存在的表。您可以使用以下查询找到它:要解决此问题,可以从中删除这些有问题的记录
foo_bar
或者可以更新它们以指向中的父行bar
实际上是存在的。k2fxgqgv2#
我认为问题是已经存在违反约束的行。您可以通过运行以下命令查看情况:
如果是这种情况,则删除有问题的行,然后再次尝试添加约束。