程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql無法創建外鍵的原因

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和Collate選項在表級和字段級上的一致。

7. 你可能設置為外鍵設置了一個默認值,如default=0。

8. ALTER聲明中有語法錯誤

當出現錯誤時,仔細檢查數據庫表和字段的設計。我更建議大家盡量使用工具來設計和創建數據庫,這樣能減少出錯的概率。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved