2012-10-11 150 views
-1

在其他兩個表上,我將d_desavanja-> id字段設置爲外鍵,但在此表上,我不能。MySQL外鍵

我該如何讓它工作?

SQL query: 

ALTER TABLE `d_des_kat` ADD FOREIGN KEY ( `desavanje_id`) REFERENCES `desavanja`.`d_desavanja` (

`id` 
) ON DELETE CASCADE ON UPDATE CASCADE ; 

MySQL said: 

#1452 - Cannot add or update a child row: a foreign key constraint fails (`desavanja/#sql-12f3_5af2e`, CONSTRAINT `#sql-12f3_5af2e_ibfk_1` FOREIGN KEY (`desavanje_id`) REFERENCES `d_desavanja` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) 
+0

做了'顯示的InnoDB status'。埋在輸出中將是一個「最後的外鍵錯誤」部分,更多細節。通常失敗是由於某種類型的字段類型不匹配導致的 –

回答

2

您在d_des_kat中有一行,該約束失敗。檢查您的數據以確保所有非NULL d_des_kat.desavanje_id值與d_desavanja中的現有id相匹配。

下面的查詢應該表現出你的違規行:

SELECT * 
FROM d_des_kat 
WHERE desavanje_id NOT IN (SELECT id FROM d_desavanja) 
+0

我得到了這個:http://i48.tinypic.com/29ld65k.png我剛剛刪除了這些行,現在我可以添加外鍵。感謝人 –

+0

當然。如果您嘗試添加與外部表不匹配的行,則外鍵會強制執行數據完整性並按設計禁用。添加密鑰時,還會在整個桌面上執行檢查,這是您在此處看到的。 –