2017-06-04 66 views
1

如果我這樣做上添加外鍵,如果指定約束它不會增加

ALTER TABLE cp8_sales_order_flat 
    ADD CONSTRAINT fk_customer 
    FOREIGN KEY (customer_id) 
    REFERENCES customers(id) 
    ON DELETE SET NULL 
    ON UPDATE CASCADE; 

它會說,它不能添加外鍵錯誤1215

,如果我只是寫

ALTER TABLE sales_flat_order 
ADD FOREIGN KEY (customer_id) REFERENCES customers(id); 

然後它添加FK和約束,但它被設置爲:restrict。

在我看來,這將允許正確的選擇連接查詢,但不能刪除或更新。爲什麼是這樣?任何修復?

UPDATE

其中的一個原因也可能是您正在使用在列DELETE SET NULL沒有定義爲null。所以請確保列設置爲默認空值。

這是一個我想,我檢查了一切,類型,排列,長度,屬性

+0

也許這有助於:https://stackoverflow.com/questions/16969060/mysql-error-1215-cannot-add-foreign-key-constraint –

+1

感謝佩佩路易斯,確實在許多答案之一有那些關鍵之一,我將其列爲答案。 – Arminius

回答

2

我的專欄CUSTOMER_ID設定爲不爲空,而我是在我的約束,「對刪除」的說法設置爲空,所以這就是我所說的邏輯精神分裂症,就像我們在歐洲有數十萬失業人員時投票贊成更多的移民一樣。幸運的是,在這裏,我可以重寫約束,而不是政治。