我有两张桌子 -
CREATE TABLE `FOO` (
`user_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
/*Nothing to see here*/
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=380 DEFAULT CHARSET=latin1;
CREATE TABLE `BAR` (
`ID` int(11) unsigned NOT NULL,
`UserID` int(11) unsigned DEFAULT NULL,
PRIMARY KEY (`ID`),
KEY `VSK_UserID_Index` (`UserID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我正在尝试在引用BAR.UserID
-
users.user_id
上创建外键约束
ALTER TABLE `FOO`.`BAR`
ADD CONSTRAINT `BAR_UserID_FKey`
FOREIGN KEY (`UserID`)
REFERENCES `FOO`.`users` (`user_id`)
ON DELETE CASCADE
ON UPDATE CASCADE;
我一直收到这个错误 -
Operation failed: There was an error while applying the SQL script to the database.
Error 1452: Cannot add or update a child row: a foreign key constraint fails
这两个表中都有数据 - 这可能是发生这种情况的原因,还是表格的创建方式有问题?
我是否需要在其中一个表上更改以使其工作?
答案 0 :(得分:1)
其中一个表格中的数据(特别是`FOO`.`BAR`
,因为那是您要添加约束的数据)与`FOO`.`users` (`user_id`)
中的数据不一致。< / p>
您必须确保`FOO`.`BAR`.`UserID`
列中的值`FOO`.`users` (`user_id`)
列全部存在于null
中。可能有{{1}}个值或其他列中不存在的其他值。