43
34

More than 5 years have passed since last update.

[MySQL] 外部キー制約作成時、ERROR 1005 (HY000): Can't create table

Posted at

概要

外部キー制約を付けたテーブル作成時、以下のエラーが発生した

ERROR 1005 (HY000): Can't create table 'table_name' (errno: 150)

このメッセージがあまり親切でなく、原因には色々な可能性が考えられる。

あり得る原因たち

  1. 対象カラムにINDEXが張られていない(対象がPRIMARY KEYでない場合)

  2. 参照先、参照元のどちらかがInnoDBでない

  3. 参照元のカラムと参照先のカラムの型が異なる

  4. 参照先カラムにデフォルト値をセットしている

  5. ON DELETE SET NULLを指定しているが参照先がNOT NULL

  6. その他何らかの構文エラーがある
    (なぜかSyntax Errorではなく、Can’t create tableが出る)

今回は3、片方のみにunsignedを指定していたためのエラーでした。

参考

MySQLでCan’t create table(errno: 150)
http://fizsoft.net/archives/300

43
34
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
43
34