Can't create table './database_name/table_name.frm' (errno: 150)

よくはまるのでメモ。
本エラーは自分は、外部キー作成できない時にでた。

kinds.id を外部キーの参照先とする。

1. だめなSQL

CREATE TABLE hoges (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(128),
    FOREIGN KEY (info_source_id) REFERENCES kinds(id),
    created DATETIME DEFAULT NULL
) ENGINE=INNODB;
;

2. 良いSQL
idつくって、KEYつくり、その後外部キー指定しなきゃだめ。
あとInnoDBでないと外部キー指定できないので注意。

CREATE TABLE hoges(
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(128),
    info_source_id INT UNSIGNED NOT NULL default '0',
    KEY info_source_id_index (info_source_id),
    FOREIGN KEY (info_source_id) REFERENCES kinds(id)
) ENGINE=INNODB
;