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