MySQL错误1452

时间:2014-04-08 12:29:15

标签: mysql mysql-workbench

这是脚本

    ALTER TABLE `candycorn`.`bb_users` 
    ADD CONSTRAINT `pf_minecraftusername`
    FOREIGN KEY (`pf_minecraftusername`)
    REFERENCES `candycorn`.`bb_profile_fields_data` (`pf_minecraftusername`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION;

和错误说明

    ERROR 1452: Cannot add or update a child row: a foreign key constraint fails  
    (`candycorn`.<result 2 when explaining filename '#sql-4e4_1785d'>, CONSTRAINT
    `pf_minecraftusername` FOREIGN KEY (`pf_minecraftusername`) REFERENCES 
    `bb_profile_fields_data` (`pf_minecraftusern)
如果有人可以的话,你会解释我在这里错过的东西吗?

2 个答案:

答案 0 :(得分:1)

表中已有的某些数据不满足您尝试添加的约束。这可能是因为在bb_users的相应列(pf_minecraftusername)中找不到bb_profile_fields_data表格中的值。

如果必须将约束添加到已包含数据的表中,则必须先手动清理表。或者,您可以清空表(使用truncate,或者在执行“drop database”之后重新制作表),然后添加约束,然后运行您必须将数据放入表中的任何脚本。

当然,如果这是一个生产系统,在成功添加约束之前,您需要进行更复杂的数据修复。

最后,我建议您在没有数据的情况下制作数据库的虚拟副本,并在那里添加约束,以检查是否正确指定了约束。你不想咆哮错误的树。

答案 1 :(得分:0)

使用NOCHECK ALTER TABLE tablename ADD CONSTRAINT [FK_1] FOREIGN KEY([Column name]) 参考餐馆([column name])

似乎数据已经存在于表中..所以 您需要使用上面的查询来修改表格。无需重新创建表格数据