繁体   English   中英

MySQL:无法添加外键

[英]MySQL: Cannot add a foreign key

我最近将一些表移到了新数据库中。 我保留了这些表的外键,使其指向旧数据库中的表。

然后,我创建了引用表的新版本。 我首先尝试修改 FK,以便它们将指向新的引用。 那没有用,所以我放弃了所有旧的FK并尝试创建新的FK。 第一阶段顺利进行。 尽管第二阶段以相同的方式对每个表都失败了 响应总是像:

ERROR 1452: Cannot add or update a child row: a foreign key constraint fails (`ml`.`#sql-d04_2`, CONSTRAINT `FK_excoeff_secID` FOREIGN KEY (`SecurityID`) REFERENCES `securities` (`SecurityID`))    

该故障立即显示,并且似乎与实际数据无关。 如您所见,在错误消息中,表名通常所在的位置现在充满了一个奇怪的字符串。 而且无论引用表是什么,错误都包含相同的字符串。

所有这些都发生在MySQL WorkBench的“ Alter table”部分中,而且还作为常规SQL查询发生。

我哪里做错了???

Peter Brawly先生, 在MySQL论坛中非常有帮助。 他的回答是:

  1. “奇怪的字符串”只是内部使用的临时表的名称
  2. 失败的原因可能是一种旧的方式-违反了数据中的参照完整性。 他是对的!
  3. 检测罪魁祸首的SQL查询是:

    从child_table AS中选择​​DISTINCT c.ID AS c从LEFT JOIN parent_table AS中选择​​p.ID为NULL的p使用(ID);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM