使用SQL語句為一張表新增外來鍵時遇到1452和3780報錯
阿新 • • 發佈:2022-03-22
有兩張表分別是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語句新增外來鍵
成功!