##概要
外部キー制約を付けたテーブル作成時、以下のエラーが発生した
ERROR 1005 (HY000): Can't create table 'table_name' (errno: 150)
このメッセージがあまり親切でなく、原因には色々な可能性が考えられる。
##あり得る原因たち
-
対象カラムにINDEXが張られていない(対象がPRIMARY KEYでない場合)
-
参照先、参照元のどちらかがInnoDBでない
-
参照元のカラムと参照先のカラムの型が異なる
-
参照先カラムにデフォルト値をセットしている
-
ON DELETE SET NULLを指定しているが参照先がNOT NULL
-
その他何らかの構文エラーがある
(なぜかSyntax Errorではなく、Can’t create tableが出る)
今回は3、片方のみにunsignedを指定していたためのエラーでした。
##参考
MySQLでCan’t create table(errno: 150)
http://fizsoft.net/archives/300