Mysql無法建立外鍵的原因

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   資料   ar   問題   

在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聲明中有語法錯誤

??

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.