我整夜都在尝试,但仍然无法完成,这是自动生成的查询:
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_table
(characterID
)) 最佳答案
对此行为最可能的解释是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
中的行。我认为,当没有索引的引用列作为前导列时,会引发不同的错误。并且如果两列的数据类型不完全匹配。