MySQL错误1452

MySQL错误1452,mysql,mysql-workbench,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 ACTI

这是剧本

    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)
错误1452:无法添加或更新子行:外键约束失败
(`candycorn`,约束条件
`pf_minecraftusername`外键(`pf_minecraftusername`)引用
`bb_profile_fields_data`(`pf_minecraftusern)

如果有人可以,您能解释一下我在这里遗漏了什么吗?

您试图添加的约束不满足于表中已有的一些数据。这可能是因为
bb\u users
表中的值在
bb\u profile\u fields\u data
中的相应列(
pf\u minecraftusername
)中找不到

如果必须将约束添加到已包含数据的表中,则必须首先手动清理这些表。或者,可以清空这些表(使用truncate,或者在执行“
删除数据库”
”后重新创建这些表),然后添加约束,然后运行必须将数据放入表中的任何脚本

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


最后,我建议您为数据库创建一个完全没有数据的虚拟副本,并在其中添加约束,只是为了检查约束是否正确指定。您不希望看到错误的树。

使用NOCHECK更改TABLE
tablename
添加约束[FK_1]外键([
列名
]) 参考餐厅([
列名
]))

表中似乎已经有数据了,所以
您需要使用上述查询修改表。无需重新创建表nd数据

有趣的是,bb_profile_fields_data(pf_minecraftusername)中是否有不在bb_users(pf_minecraftusername)中的条目,基本上违反了约束?错误是不言而喻的,您至少有一行与您尝试插入的外键不匹配。您可以粘贴完整查询,如
create
table和with fk relation