MySQL:5.5.27
phpMyAdmin:最新版本之一
我有一个数据库,其中包含以下表:
- 成员(member)
- 语言
- 成员(member)语言
由于我匆忙创建了它并且必须填充它以进行测试,我后来发现并非所有约束都是应有的。例如,member_language 表中的 member_id 显然必须映射到 member 表中的 mem_id,并且 member_language 表中的 language_id 必须映射到 language 表中的 lang_id。因此,我重新创建了所有 3 个表,然后将所有数据重新导入到复制的表中:第一个是 member,然后是 language,最后是 member_language。
然后我尝试对member_language强制实现约束,但无法为member.mem_id创建fk约束,该约束将其链接到member_language.member_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`))
有人能给我指出正确的方向吗? 塔克斯 SP
最佳答案
好的,这就是问题所在。
member_language 表中确实缺少一些member_id 值。这可能不是唯一的问题,但肯定有一个问题是我从 phpMyAdmin 创建的 SQL 导出文件跳过了一些值!
这确实很奇怪,因为我在查看表格时可以看到浏览 View 中的值,但在导出时,它在各处丢失了该表格中的行。所以确实存在不匹配,我认为这是导致问题的原因。
如果我发现其他可能的原因,我会再次发布......
关于mysql - 更换mysql数据库上的约束,总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19188805/