这是脚本
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)
如果有人可以的话,你会解释我在这里错过的东西吗?
答案 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
])
似乎数据已经存在于表中..所以 您需要使用上面的查询来修改表格。无需重新创建表格数据