[MySQL]外部キー追加で「#1215 – 外部キー制約を追加できません。」となってしまう原因

スポンサーリンク

概要

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の有無、などがある。

コメント