mysql 新增外來鍵 遇到的問題
阿新 • • 發佈:2019-02-16
2017-2-23 wangan:
問題描述 新增外來鍵時報錯
[SQL]alter table user_viewitems add foreign key locstock_ibfk2 (user_id) references users(id)
[Err] 1215 - Impossible d'ajouter des contraintes d'index externe
解決步驟
1 給外來鍵欄位新增索引,
2.檢視欄位型別是否和主表一致。
完成上述兩步後發現還是報錯
http://stackoverflow.com/questions/26260425/phpmyadmin-mysql-foreign-key
這連結說 給外來鍵欄位加unsigned
然後
3. 運行了 alter table user_viewitems modify user_id INT UNSIGNED NOT NULL
4.再次新增外來鍵 成功!!
[SQL]alter table user_viewitems add foreign key locstock_ibfk2 (user_id) references users(id)受影響的行: 0
時間: 0.055s
-------------------------------------
Sql程式碼 收藏程式碼
alter table locstock add foreign key locstock_ibfk2 (stockid) references product(stockid)locstock 為表名, locstock_ibfk2 為外來鍵名 第一個括號裡填寫外來鍵列名, product為表名,第二個括號裡是寫外來鍵關聯的列名
刪除外來鍵
Sql程式碼 收藏程式碼
alter table locstock drop foreign key locstock_ibfk2
查看錶有哪些外來鍵
Sql程式碼 收藏程式碼
show create table locstock
==============================================================
語法:
Sql程式碼 收藏程式碼
[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
REFERENCES tbl_name (index_col_name, ...)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
條件:
所有tables必須是InnoDB型 ,它們不能是臨時表。
在引用表中,必須有一個索引,外來鍵列以同樣的順序被列在其中作為第一列。這樣一個索引如果不存在,它必須在引用表裡被自動建立。
在引用表中,必須有一個索引,被引用的列以同樣的順序被列在其中作為第一列。
不支援對外來鍵列的索引字首。這樣的後果之一是BLOB和TEXT列不被包括在一個外來鍵中, 這是因為對這些列的索引必須總是包含一個字首長度。
如果CONSTRAINTsymbol 被給出,它在資料庫裡必須是唯一的。如果它沒有被給出,InnoDB自動建立這個名字。