Mysql建立外鍵時報errno150,Can't create table錯誤

報錯緣由1: 主鍵與外鍵的字符類型不匹配sql

首先建立兩張以下的表而後執行,發現two表建立失敗,檢查以後分析緣由得出是由於主鍵與外鍵的字符類型不匹配,one表的id是int類型,two表的tid是char(10)類型,這時只要改成一致的字符類型就解決問題了。
若是發現本身建立的表,主鍵外鍵字符類型同樣,那就考慮其它可能,請接着看。數據庫

create table one(
    id int primary key,
    oname VARCHAR(30)
);
create table two(
    tid char(10),
    tname VARCHAR(30),
    constraint t_o_sk foreign key (tid) references one(id) on delete cascade on update cascade  
##on delete cascade是級聯刪除,on update cascade 是級聯更新
);

報錯緣由2:主表的主鍵不是primary key
若是是的話,表又建立好了,那麼能夠用alter進行修改便可。
這種問題發現沒有解決問題的話,那可能下面的考慮第三種狀況了。ide

alter table one modify id  int primary key;

報錯緣由3:檢查字符編碼是否一致
Mysql建立外鍵時報errno150,Can't create table錯誤編碼

報錯緣由4:找不到外鍵引用的列
列在增長外鍵的時候,可能已經存在數據了(歷史數據,或者更新數據庫表時設置的默認值),但這些數據並不必定能在外鍵關聯表中找到對應的行記錄。這種狀況也會致使外鍵建立失敗。code

相關文章
相關標籤/搜索