2016-08-11 85 views
-1

我試圖同時向我的數據庫中插入兩條記錄。一個用主鍵,另一個用外鍵。不過,我得到以下錯誤,當我嘗試實現這一點:數據庫(MySQL)錯誤

Cannot add or update a child row: a foreign key constraint fails ....(database details). 

我已經使用這個查詢來創建外鍵:

ALTER TABLE `notes` ADD CONSTRAINT `notes_author_fk` 
    FOREIGN KEY (`authorid`) REFERENCES `audiofeed`.`author`(`authorid`) ON DELETE NO ACTION ON UPDATE CASCADE; 

錯誤的語句點:

$query1 = "INSERT INTO notes(notename,categoryname,file,authorname)"; 
$query1 .= "VALUES ('$Trackname','$category','$name','$author')"; 
+0

您實際上沒有發佈產生錯誤的語句。 – sstan

+0

如果在插入/更新/刪除過程中發生錯誤,則表示FK已經生效,您提出的數據更改會違反規則。 FK。 – Drew

+0

如果在嘗試使用'ALTER TABLE'時發生錯誤,這意味着您的數據尚未準備好用於您要強加的規則 – Drew

回答

0

如果錯誤確實發生在您發佈的insert聲明中,我注意到您沒有爲authorid列插入任何值,即列n有一個外鍵定義。

通常情況下,這應該是好的,因爲它應該簡單地插入NULL,並且不會違反外鍵約束。

但是,如果在notes表中的列authorid有一個默認值規範,可以嘗試插入不能在author表中找到一個無效的默認值,從而給你的錯誤。

您可能想要驗證authorid列的定義方式,並根據需要進行調整。

或者,請確保您在insert聲明中爲authorid設置了適當的值。

+0

不知道爲什麼你刪除我的問題上的答案。編輯正確後。 –

+0

@Juan:哈。是的,我基本上有答案,但我必須去吃飯,沒有時間思考,所以我寧願刪除它,讓別人回答。 – sstan