我是這個努力了一夜,但還是無法完成它,這裏是自動生成的內容的查詢:添加外鍵失敗的phpMyAdmin的
ALTER TABLE `avatar` ADD FOREIGN KEY ( `characterID`) REFERENCES `201701_481_g02`.`character_table` (
`characterID`
) ON DELETE RESTRICT ON UPDATE RESTRICT ;
錯誤消息:
我是這個努力了一夜,但還是無法完成它,這裏是自動生成的內容的查詢:添加外鍵失敗的phpMyAdmin的
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
,約束#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
中的行。
我認爲當沒有引用列作爲主要列的索引時引發了不同的錯誤。並且如果兩列的數據類型不完全匹配。
對於埃羅r代碼1452根據Mysql文檔,
外鍵關係涉及一個保存中央數據值的父表和一個具有相同值的子表指向其父。 FOREIGN KEY子句在子表中指定。
如果父表中沒有匹配的候選鍵值,它將拒絕嘗試在子表中創建外鍵值的任何INSERT或UPDATE操作。
所以,你的情況外鍵或CharacterId子表上(化身)中沒有匹配的候選鍵在父表中的值(character_table)