2016-03-21 49 views
1

我試圖插入此代碼到我的相冊表上我的MySQL數據庫不能將值插入表,外鍵約束不斷失敗

INSERT INTO `Albums` (`Albumid`, `Name`, `Numberoftracks`, `Artistid`,  ] 
`Genre`) VALUES (1, "Innuendo", 12, "Queen", "Rock"); 

但每次我嘗試時候,我不斷收到此錯誤。

1452 - Cannot add or update a child row: a foreign key constraint fails 
(`b4014107_db1/Albums`, CONSTRAINT `Albums_ibfk_1` FOREIGN KEY (`Artistid`) 
REFERENCES `Artist` (`Artistid`)) 

我知道這件事情做的表內我的外鍵,但我需要手動輸入外鍵,因爲它不是自動遞增。

這是表代碼。

CREATE TABLE `Albums` ( `Albumid` int(6) NOT NULL, `Name` varchar(50) NOT 
NULL, `Numberoftracks` int(11) NOT NULL, `Artistid` int(6) NOT NULL, 
`Genre` varchar(50) NOT NULL, PRIMARY KEY (`Albumid`), KEY `Artistid` 
(`Artistid`), CONSTRAINT `Albums_ibfk_1` FOREIGN KEY (`Artistid`) 
REFERENCES `Artist` (`Artistid`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 

我該如何解決這個問題?我需要將數據輸入到表格中。

+0

您是否在藝術家的桌子上添加了藝術家「女王」?因爲如果沒有,你應該先添加藝術家,否則你的FK將會被違反。 –

+0

另外,ArtistId是一個數字,您正嘗試在其中添加VARCHAR。您應該將藝術家'女王'添加到表格藝術家,並獲取ArtistId以用於插入您的藝術家。 –

回答

1

artistid是表Albums中的外鍵。當您嘗試在子表中插入一個不存在於父表中的外鍵時,會出現父子關係錯誤。 artistid不在您的Artist表中。

另外,要添加的數據類型artistid也是不同的。

mysql docs

兩者外鍵關係涉及到持有 中央數據值的父表和子表具有相同值指向 回其父。 FOREIGN KEY子句在子表 中指定。

如果在父表中沒有匹配的 候選鍵值,它將拒絕嘗試在子表中創建 外鍵值的任何INSERT或UPDATE操作。

先刪除您的錯誤,請將Queens藝術家在Artist表,然後你可以將其插入Albums表。還要更正列artistid的數據類型。