在mysql中建立資料表時,經常會遇到問題而失敗,其中建立外來鍵有很多細節需要我們去留意,主要有以下幾種常見原因。
1. 兩個欄位的型別或者大小不嚴格匹配。例如,如果乙個是int(10),那麼外來鍵也必須設定成int(10),而不是int(11),也不能是tinyint。另外,你還必須確定兩個字段是否都為signed或者unsigned,這兩欄位必須嚴格地一致匹配。
2. 設定外來鍵的字段沒有建立起索引,或者不是乙個primary key(主鍵)。一般,需要建立外來鍵的資料表稱為子表,而相關聯的資料表稱為父表。建立外來鍵時所對應的父表的字段必須要建立索引primary key。
3. 其中乙個或者兩個表是myisam引擎的表。若想要使用外來鍵約束,表必須是innodb引擎(實際上,如果兩個表都是myisam 引擎的,這個錯誤根本不會發生,但也不會產生外來鍵,只會建立索引)你需要檢查表的引擎型別。
4. 外來鍵的名字不能重複。檢查該資料庫確保外健名字是唯一的,或者你可以在鍵名後面加上幾個隨機的字元以測試是否為此原因。
5. 設定了on delete set null,但是相關的鍵的字段設定成了not null值。通過修改外來鍵的屬性值或者把字段屬性設定成allow null來解決。
6. 確保你的charset和collate選項在表級和字段級上的一致。
7. 兩欄位設定的預設值不一致。乙個字段設定default為0,乙個設定default為null,也是不可行的。
8. alter宣告中有語法錯誤
當出現錯誤時,仔細檢查資料庫表和字段的設計。我更建議大家盡量使用工具來設計和建立資料庫,這樣能減少出錯的概率。
mysql建立外來鍵錯誤
can t create table sql 1130 1 errno 150 問題原因 檢查進行關聯的兩個字段型別是否一致 解決辦法 將字段型別改為一致 cannot add or update a child row a foreign key constraint fails sql 1130...
mysql建立外來鍵
建立外來鍵的前提 本表的列必須與外來鍵型別相同 外來鍵必須是外表主鍵 外來鍵作用 使兩張表形成關聯,外來鍵只能引用外表中的列的值!指定主鍵關鍵字 foyunmkreign key 列名 引用外來鍵關鍵字 references 外來鍵表名 外來鍵列名 事件觸發限制 on delete和on updat...
mysql建立外來鍵案例 MySQL外來鍵例項
外來鍵例項 性別表create table gender gid int auto increment primary key not null,gender char 10 insert into gender gender values male female unknown 乙個表只能有乙個主...