MySQL 错误 1452

标签 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)

如果有人可以,你能解释一下我在这里错过了什么吗?

最佳答案

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

如果您必须将约束添加到已有数据的表中,则必须先手动清理表。或者,您可以清空表(使用截断,或者在执行“删除数据库”后重新创建表),然后添加约束,然后运行您必须将数据放入表。

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

最后,我建议您制作一个完全没有数据的数据库虚拟副本,并在其中添加约束,只是为了检查约束是否已正确指定。你不想找错树。

关于MySQL 错误 1452,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22937052/

相关文章:

mysql - 如何通过 Laravel 迁移触发每一行的 MySQL 过程

mysql - Google Cloud SQL 连接/权限失败

mysql - 将 mysql 数据库备份到独立文件中

mysql - SQL IS NOT NULL 不工作

Android Http 请求 - 如何禁用缓存

java - 从 android 到 mysql 进行查询是否安全?

MySQL 随机查询但具有来自 1 列的不同值

mysql - MariaDB utf8mb4 编码的字符串值错误

mysql - 如何将所有数据库表从一个模式复制到同一服务器上的另一个模式?

php - 更新一组用户id