hogepiyoエンジニアリング

トラブルシューティングからノウハウ、作ってみた系まで扱う情報系ブログ

MySQLの外部キー制約エラーの詳細の確認方法

結論から言うと他のサイトで見るような外部キーのややこしい制約にはまったわけではなく、単にテーブル名の不一致だった。
が、基本的にMySQLで外部エラーがでたときは以下のような簡素なメッセージしか出してくれないので原因が判別しづらい。

ERROR 1005 (HY000): Can't create table 'hoge_db_name.huga_table_namer' (errno: 150)

そこで、以下のコマンドで最新の外部キー制約エラーの詳細を確認することができる。

SHOW ENGINE INNODB STATUS\G;

これを実行するといろいろな項目がずらっとでてくるが、外部キー制約エラーの詳細は

LATEST FOREIGN KEY ERROR

に書かれている。昔は以下のコマンドだったらしいが、新しめのMySQLだとSyntax Errorではじかれるので注意

SHOW INNODB STATUS;

なんで最初っから詳細メッセージ出してくれないんだろうなぁ。