外部キー制約エラー

うーmm、くそ忙しくて最近なかなかブログ更新できてないです ><

MariaDB で稼働してる、構成がまったく同じDBが複数存在します。本日、こいつらにテーブルを追加してたら、あるDBだけ CREATE TABLE が失敗しました。エラー情報みると、

errno: 150 "Foreign key constraint is incorrectly formed"

どうも外部キー制約で弾かれてるらしい・・・・

よくありがちな、外部キーの型が違うとか unsigned が抜けてるよとか、そういうのではなさそう。テーブル定義は他のDBとまったく同じで、他は外部キー設けるの成功するため、何が原因かさっぱり判らなかったが、調査した結果、なんとこのDBだけ親テーブルが MyISAM になっているではないかっー!*1

というわけで、テーブルのエンジンを MyISAM から InnoDB に直したらあっさり通りました。こんなこともあるのねー、と備忘録でした(汗

*1:MyISAMは外部キーをサポートしていない