2015-08-26 59 views
0

這裏是我正在執行的語句和相關的錯誤,任何提示什麼是錯誤的,以及如何進一步調試是值得讚賞的。使用MySQL Workbench/MySQL。無法在MySQL中添加外鍵?

特別困惑是什麼意思孩子排在這裏?如何將外鍵與子行關聯起來?這裏的兒童排是什麼?

ALTER TABLE Orders 
ADD CONSTRAINT fk_Customer FOREIGN KEY (CustomerID) 
REFERENCES Customers(CustomerID) 

錯誤代碼:1452不能添加或更新子行,外鍵 約束失敗(test#sql-ff_2,約束fk_Customer FOREIGN KEY(CustomerID)參考文獻CustomersCustomerID)。)

+1

可能[這](HTTP ://stackoverflow.com/questions/22210461/mysql-error-code-1452-foreign-key-constraint)或[this](http://stackoverflow.com/questions/1253459/mysql-error-1452-cannot- add-or-update-a-child-row-a-foreign-key-constraint-fa)help? – SomeJavaGuy

+0

@KevinEsche,當定義外鍵約束時會出現我的問題,並且您提到的問題是在插入期間處理錯誤?請隨時糾正我。 –

+1

檢查第二個鏈接,確保您試圖引用的所有ID都存在於引用表中。 – SomeJavaGuy

回答

1

此錯誤表示您的表包含您嘗試創建的外鍵不應允許的數據。你可以使用查詢來找到他們:

SELECT * 
FROM orders 
WHERE customerid NOT IN (SELECT customerid FROM customers) 

如果你確定這些行確實出現故障,您可以使用類似的delete語句刪除它們:

DELETE FROM orders 
WHERE customerid NOT IN (SELECT customerid FROM customers) 
+0

感謝並遇到錯誤,錯誤代碼:1064.您的SQL語法有錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以便在第2行 –

+1

@LinMa的'WHERE customerID NOT IN(SELECT customerid FROM Orders)'附近使用正確的語法。 'select'還是'delete'? – Mureinik

+0

嗨Mureinik,刪除語句。 –