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

时间:2014-04-20 19:13:37

标签: mysql

我正在尝试在表格上添加外键"菜单"并获得错误:

1452 - Cannot add or update a child row: a foreign key constraint fails (`#sql-c74_c5`, CONSTRAINT `#sql-c74_c5_ibfk_1` FOREIGN KEY (`restaurant_id`) REFERENCES `restaurants` (`restaurant_id`)) 

我的餐厅表格中有一列restaurant_id,它是此表的主键。

菜单表有三列menu_idmenu_namerestaurant_id。现在我跑的时候

ALTER TABLE `menu` ADD FOREIGN KEY ( `restaurant_id` ) REFERENCES `restaurants` (`restaurant_id`);

然后我收到错误#1452。

请帮助我:)

1 个答案:

答案 0 :(得分:0)

听起来该列中已有的数据不符合外键要求,这意味着,在"菜单中的restaurant_id中有一个空值"表,或者您有一个餐厅restaurant_id中不存在的值。如果您希望仅在此时强制执行外键,则需要" nocheck"否则您需要使数据满足约束的要求。要添加nocheck外键,这就是您所需要的:

ALTER TABLE menu with NOCHECK
ADD CONSTRAINT [FK_menu_restaurants] FOREIGN KEY ([restaurant_id])
REFERENCES restaurants([restaurant_id])

我希望这会有所帮助。