概要
MySQLで既存のカラムに後から外部キーを追加しようとすると「1215 – 外部キー制約を追加できません。」となり追加できないことがある。
原因
親テーブルと子テーブルのカラムのデータ型が異なっていることが原因である。
例えば以下のSQLの場合、users.item_idとitems.idのデータ型が違う場合は#1215エラーとなる。
ALTER TABLE `users` ADD CONSTRAINT `users_item_id_foreign` FOREIGN KEY (`item_id`) REFERENCES `items`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
データ型の違いは、よくあるものとしてはintとbigInt、unsignedの有無、Not Nullの有無、などがある。