1. 程式人生 > 其它 >使用SQL語句為一張表新增外來鍵時遇到1452和3780報錯

使用SQL語句為一張表新增外來鍵時遇到1452和3780報錯

有兩張表分別是student和xyz,要把student中的xyzid欄位作為外來鍵,xyz表中的xyzid為主鍵

首先確定SQL語句無誤

ALTER TABLE student
ADD CONSTRAINT `Fr_xyzid` FOREIGN KEY(`xyzid`) REFERENCES `xyz`(`xyzid`);
/**ADD CONSTRAINT <約束名> FOREIGN KEY(`引用列`) REFERENCES `主表`(`主鍵`)*/

一開始報錯1452

查詢出如下連結有外來鍵的子表對應的主表中沒有資料
於是對xyz表添加了一些資料

然後就是報錯3780

查得如下連結

外來鍵null約束與Unsigned約束一定要與主鍵一樣,否則就報錯
到此時我仍然是滿臉懵逼的狀態,又去仔細的對比了外來鍵列和被引用列的引數設定

此時我對自己的SQL語句產生懷疑,沒辦法使用SQLyog中視覺化的新增外來鍵方法竟然還是報錯,而且提示的SQl語句和我自己寫的沒差別,並變成了如下錯誤

結果又跑回了1452報錯

再找一個回答1452三種原因
應該是第三種什麼什麼不匹配的問題

解決方法就是刪除外來鍵列,重新新增空值外來鍵列(這裡說的就是student表中的xyzid這一列)
並且在重新新增時還是要注意和xyz表中主鍵設定一致

這次再使用視覺化新增外來鍵成功

刪除外來鍵

再次使用執行SQL語句新增外來鍵

成功!