替换mysql数据库上的约束,一个总是失败的

替换mysql数据库上的约束,一个总是失败的,mysql,constraints,Mysql,Constraints,MySQL:5.5.27 phpMyAdmin:最新版本之一 我有一个数据库,其中包括以下表格: 成员 语言 成员语言 由于我匆忙创建了它,并且为了测试的目的不得不填充它,我发现并不是所有的约束都是应该的。例如,member\u language表中的member\u id必须明显映射到member表中的mem\u id,而member\u language表中的language\u id必须映射到language表中的language\u id。因此,我重新创建了所有3个表,然后将所有数据

MySQL:5.5.27

phpMyAdmin:最新版本之一

我有一个数据库,其中包括以下表格:

  • 成员
  • 语言
  • 成员语言
由于我匆忙创建了它,并且为了测试的目的不得不填充它,我发现并不是所有的约束都是应该的。例如,member\u language表中的member\u id必须明显映射到member表中的mem\u id,而member\u language表中的language\u id必须映射到language表中的language\u id。因此,我重新创建了所有3个表,然后将所有数据重新导入到复制的表中:首先是member,然后是language,最后是member\u language

然后我尝试对member\u language强制执行约束,但它无法为member.mem\u id创建fk约束,该约束将链接到member\u language.member\u id。每次它抛出

#1452 error - Cannot add or update a child row: a foreign key constraint fails (`dbname`.`#sql-122f_bec4cef`, CONSTRAINT `#sql-122f_bec4cef_ibfk_2` FOREIGN KEY (`member_id`) REFERENCES `member` (`mem_id`))
有人能给我指一下正确的方向吗? Tks
SP

好的,下面是问题所在

member_language表中确实缺少一些member_id值。这可能不是唯一的问题,但肯定有一个问题是我从phpMyAdmin创建的SQL导出文件跳过了一些值

这真的很奇怪,因为我可以在浏览视图中查看表中的值,但在导出时,它漏掉了表中的各行。因此确实存在不匹配,我认为这是造成问题的原因


如果我发现其他可能的原因,我将再次发布…

您试图在该表中插入一条记录,但父表中不存在对应的记录。但这是奇怪的事情-它们确实都存在!在数据库中执行
显示发动机状态
。在输出的中间位置将隐藏关于外键错误的更多详细信息。非常感谢。但是,我没有足够的权限在这个托管数据库上这样做。相反,我开始一张一张地拆开桌子——看看我的答案,看看我发现了什么!还有一件事:一些成员没有成员_语言的条目,因为系统中的遗留数据在前18个月没有存储这些数据。我认为它已经全部检查过了,但显然没有:-(。经验教训:将来,我将确保所有缺少项的遗留数据都将被指定一个默认值,即使它的计算结果为“未知”。从长远来看,这将节省时间。