2016 11 10 MySQL外來鍵約束不能建表

2021-07-29 06:57:33 字數 850 閱讀 3277

因為時間比較遠了,當時遇到這個問題時查詢資料解決了,但是沒有保留引用位址,如原作者認為侵權,立刪!

在mysql中建立外來鍵時,經常會遇到問題而失敗,這是因為mysql中還有很多細節需要我們去留意可能有以下幾種常見原因。

1.  兩個欄位的型別或者大小不嚴格匹配。例如,如果乙個是int(10),那麼外來鍵也必須設定成int(10),而不是int(11),也不能是tinyint。另外,你還必須確定兩個字段是否乙個為            signed,而另乙個又是unsigned(即:無符號),這兩欄位必須嚴格地一致匹配,更多關於signed和unsigned的資訊,請參閱:

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宣告中有語法錯誤

當出現錯誤時,仔細檢查資料庫表和字段的設計。

mysql 外來鍵 del 記錄 MySQL 外來鍵

在mysql中 1 mysql 資料表主要支援六種型別 分別是 bdb heap isam merge myisam innobdb。這六種又分為兩類,一類是 事務安全型 transaction safe 包括bdb和innodb 其餘都屬於第二類,稱為 非事務安全型 non transaction...

mysql外來鍵和外來鍵約束

1.mysql中 鍵 和 索引 的定義相同,所以外來鍵和主鍵一樣也是索引的一種。不同的是mysql會自動為所有表的主鍵進行索引,但是外來鍵字段必須由使用者進行明確的索引。用於外來鍵關係的字段必須在所有的參照表中進行明確地索引 2.如果表a的主關鍵字是表b中的字段,則該字段稱為表b的外來鍵,表a稱為主...

mysql 外來鍵和外來鍵約束

1.外來鍵 如果公共關鍵字在乙個關係中是主關鍵字,那麼這個公共關鍵字被稱為另乙個關係的外來鍵。就是a表的主鍵,被用到了b表中,此時它就成了外來鍵 2.外來鍵約束 如果想要插入或者更新外來鍵的值,資料庫會和引用表中字段的資料進行驗證,如果插入或更改的值不在被引用的表中,則插入失敗 外來鍵的作用就是保證...