我整夜都在尝试,但仍然无法完成,这是自动生成的查询:

ALTER TABLE  `avatar` ADD FOREIGN KEY (  `characterID` ) REFERENCES `201701_481_g02`.`character_table` (

`characterID`
) ON DELETE RESTRICT ON UPDATE RESTRICT ;


错误消息:

1452-无法添加或更新子行:外键约束失败(201701_481_g02#sql-6595d_522e8,CONSTRAINT #sql-6595d_522e8_ibfk_1外键(characterID)参考character_tablecharacterID))

最佳答案

对此行为最可能的解释是avatar表中的行,这些行的characterID值未出现在character_table中。

我们可以使用带有反联接模式的​​查询来识别那些值。例如

  SELECT a.characterID
    FROM `avatar` a
    LEFT
    JOIN `201701_481_g02`.`character_table` c
      ON c.characterID = a.characterID
   WHERE c.characterID IS NULL


确定这些值后,我们可以在引用表中的characterID列中创建具有适当值的行。或者,我们可以删除或修改avatar中的行。



我认为,当没有索引的引用列作为前导列时,会引发不同的错误。并且如果两列的数据类型不完全匹配。

10-05 19:18