首頁  >  文章  >  資料庫  >  mysql添加外鍵失敗怎麼辦

mysql添加外鍵失敗怎麼辦

藏色散人
藏色散人原創
2023-02-16 10:15:573431瀏覽

mysql新增外鍵失敗的解決方法:1、檢查兩個欄位的類型或大小是否符合並修改;2、為設定外鍵的欄位建立起索引;3、檢查表的引擎類型,並修改為InnoDB引擎;4、檢查外健名字是否唯一並修改;5、透過修改cascade的屬性值或把欄位屬性設為allow null等。

mysql添加外鍵失敗怎麼辦

本教學操作環境:Windows10系統、MySQL5.7版本、Dell G3電腦。

mysql新增外鍵失敗怎麼辦?

mysql外鍵建立失敗原因

首先,如果和外鍵相關的幾張表中已經插入了數據,可能導致外鍵插入的失敗

在MySQL中建立外鍵時,常常會遇到問題而失敗,這是因為Mysql還有很多細節需要我們去留意,我自己總結並查閱資料後列出了以下幾種常見原因。

1.  兩個欄位的類型或大小不嚴格符合。例如,如果一個是int(10),那麼外鍵也必須設定成int(10),而不是int(11),也不能是tinyint。另外,你還必須確定兩個欄位是否一個為signed,而另一個又是unsigned(即:無符號),這兩個欄位必須嚴格地一致匹配,更多關於signed和unsigned的信息,請參閱:http: //www.verysimple.com/blog/?p=57

2. 試圖設定外鍵的欄位沒有建立起索引,或不是一個primary key(主鍵)。如果其中一個不是primary key的話,你必須先為它建立一個索引。

3. 其中一個或兩個表是MyISAM引擎的表。若想要使用外鍵約束,表必須是InnoDB引擎(實際上,如果兩個表都是MyISAM 引擎的,這個錯誤根本不會發生,但也不會產生外鍵,只會建立索引)你需要檢查表的引擎類型。

4. 外鍵的名字不能重複。你應該檢查你的資料庫以確保外健名字是唯一的,或者你在鍵名後面加上幾個隨機的字元以測試是否是這個原因。

5. 你可能設定了ON DELETE SET NULL,但是相關的鍵的欄位又設定成了NOTS NULL值。你可能透過修改cascade的屬性值或把字段屬性設為allow null來解決。

6. 請確定你的Charset和Collat​​e選項在表格層級和欄位層級上的一致。

7. 你可能設定為外鍵設定了一個預設值,如default=0。

8. ALTER宣告中有語法錯誤

 

當發生錯誤時,請仔細檢查資料庫表格和欄位的設計。我更建議大家盡量使用工具來設計和建立資料庫,這樣能減少出錯的機率。

推薦學習:《MySQL影片教學

以上是mysql添加外鍵失敗怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn