我整夜都在尝试这个但仍然无法完成,这是自动生成的查询:
ALTER TABLE `avatar` ADD FOREIGN KEY ( `characterID` ) REFERENCES `201701_481_g02`.`character_table` (
`characterID`
) ON DELETE RESTRICT ON UPDATE RESTRICT ;
错误消息:
201701_481_g02
。#sql-6595d_522e8
,CONSTRAINT #sql-6595d_522e8_ibfk_1
FOREIGN KEY(characterID
)REFERENCES {{1 (character_table
))答案 0 :(得分:1)
此行为最可能的解释是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
中的行。
我认为当没有引用列作为前导列的索引时会引发不同的错误。如果两列的数据类型不完全匹配。
答案 1 :(得分:0)
根据Mysql文档的错误代码1452,
外键关系涉及包含中心数据值的父表,以及具有指向其父级的相同值的子表。 FOREIGN KEY子句在子表中指定。
如果父表中没有匹配的候选键值,它将拒绝任何尝试在子表中创建外键值的INSERT或UPDATE操作。
因此,在您的情况下,子表(头像)上的外键 characterID 在父表中没有匹配的候选键值( character_table )