2011-06-02 80 views
0

所以情況是這樣的:MySQL的錯誤:無法添加或更新子行,外鍵約束失敗

我創建一個形成一組,存儲在test_groups_tb,然後用另一種形式輸入用戶ID附加他們到組,它們被存儲在group_association_tb,其結構如下所示:

group_id | user_id

我很新的MySQL和更使外鍵關係,所以我試圖建立在group_association_tb這是一個關係基本上,如果該組被刪除,則從group_association中刪除該組的所有記錄_tb。

現在發生了什麼,因爲應用這個組是存儲好的。我可以手動添加學生,但是當我嘗試通過導入csv添加它們時,它不喜歡它。

這裏是查詢(我知道它不是有效的查詢每次迭代):

while($row = mysql_fetch_assoc($result)) 
    { 
     $sql = "INSERT INTO group_association_tb (group_id, user_id)VALUES('$group','".$row[user_id]."')"; 
     mysql_query($sql) or die(header("Location:error.php")); 
    } 

以下是錯誤我得到:

Cannot add or update a child row: a foreign key constraint fails (`ece70141/group_association_tb`, CONSTRAINT `group_association_tb_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `test_groups_tb` (`group_id`) ON DELETE CASCADE) 

有人能解釋這個問題是在這裏。

千恩萬謝,

+1

您試圖添加到group_association_tb的group_id是否存在於test_groups_tbl表中? – superultranova 2011-06-02 18:24:41

+0

是的,這就是爲什麼我很困惑,我有兩種方法供用戶選擇添加用戶,手動輸入他們的學號,或者導入一個csv文件。這一切都沒有適用的關係工作,但與它應用.csv導入不工作:S – buymypies 2011-06-02 18:28:26

+0

這可能是一個很大的,但你確定$組變量得到適當的評估? – superultranova 2011-06-02 18:33:05

回答

1

對於那些遇到的問題「錯誤1216:不能添加或更新子行,外鍵約束失敗」,它實際上意味着它說什麼!孩子的某些行不符合約束,糾正問題。 您可以找到如下所示的行: select child.id from child left join parent on(child.parent_id = parent.id)其中child.id不爲null,parent.id爲null;

(從http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

+1

什麼?該查詢將始終返回一個空集。已經在表中的行永遠不會違反外鍵約束。 – Hammerite 2011-06-02 18:44:06

0

編輯:我認爲你需要反轉的約束。 test_groups_tb需要引用grop_association_tbl。

看起來您沒有將group_id從group_association_tb表中引用到test_group_tb表中。如果來自group_association_tb的外鍵引用了test_group_tb中的鍵,則該鍵必須位於test_group_tb中,然後才能將其添加到group_association_tb。

例如:

我有一個表(USER_GROUP)_定義如下:

group_id, first_name, last_name 

而另一家(group_permission)如下:

group_id, permission_name 

如果我創建一個外從group_permission中引用user_group的鍵,我無法將group_permission中的行添加到user_group中不存在的group_id。首先,我必須使用給定的group_id在user_group中創建行,然後使用user_group中關聯行的group_id插入到group_permission表中。

+0

但test_groups_tb是他們可以刪除組的地方,並且該組在test_groups_tb中,首先是因爲我檢查了,其次我可以手動添加用戶。它只是由於某種原因循環通過它不喜歡的csv條目:S – buymypies 2011-06-02 18:43:46

相關問題