Mysqlはerrno150を報告します、外部キーの作成時にテーブルエラーを作成できません

エラー理由1:主キーと外部キーの文字タイプが一致しない

最初に次のように2つのテーブルを作成してから実行します。2つのテーブルの作成に失敗したことがわかりました。確認後、主キーと外部キーの文字タイプが一致しないため、理由を分析します。1つのテーブルのIDはint型で、テーブル2の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:プライマリテーブルのプライマリキーがプライマリキーではありません。プライマリキーである
場合、テーブルが再度作成されると、alterを使用して変更できます。
この問題が解決されていないことが判明した場合は、3番目のケースを以下で検討できます。

alter table one modify id  int primary key;

エラー理由3:文字エンコーディングが一貫しているかどうかを確認します
Mysqlはerrno150を報告します、外部キーの作成時にテーブルエラーを作成できません

エラー理由4:外部キーによって参照されている列が見つかりません。外部キーが
追加されたとき、すでにデータ(履歴データ、またはデータベーステーブルの更新時に設定されたデフォルト値)が存在する可能性がありますが、これらのデータは必ずしも外部キーに関連付けられているとは限りません。テーブルで対応する行を見つけます。この状況では、外部キーの作成も失敗します。

おすすめ

転載: blog.51cto.com/000011211684/2569663