尝试向表中添加外键失败?

时间:2015-08-17 22:14:46

标签: mysql foreign-keys

我有两张桌子 -

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

这两个表中都有数据 - 这可能是发生这种情况的原因,还是表格的创建方式有问题?

我是否需要在其中一个表上更改以使其工作?

1 个答案:

答案 0 :(得分:1)

其中一个表格中的数据(特别是`FOO`.`BAR`,因为那是您要添加约束的数据)与`FOO`.`users` (`user_id`)中的数据不一致。< / p>

您必须确保`FOO`.`BAR`.`UserID`列中的值`FOO`.`users` (`user_id`)列全部存在于null中。可能有{{1}}个值或其他列中不存在的其他值。