这是脚本
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)
如果有人可以,你能解释一下我在这里错过了什么吗?
最佳答案
表中已有的某些数据无法满足您尝试添加的约束。这可能是因为在 bb_profile_fields_data
的相应列 (pf_minecraftusername
) 中找不到 bb_users
表中的值。
如果您必须将约束添加到已有数据的表中,则必须先手动清理表。或者,您可以清空表(使用截断,或者在执行“删除数据库
”后重新创建表),然后添加约束,然后运行您必须将数据放入表。
当然,如果这是一个生产系统,您需要先进行更复杂的数据修复,然后才能成功添加约束。
最后,我建议您制作一个完全没有数据的数据库虚拟副本,并在其中添加约束,只是为了检查约束是否已正确指定。你不想找错树。
关于MySQL 错误 1452,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22937052/