テーブル作成時に外部キーを追加しようとしたらエラーになったのでその対応メモ
現象
とあるテーブルに以下のような外部キーを追加するコマンドを実行
ALTER TABLE `some_table` ADD CONSTRAINT `fkey_item_id` FOREIGN KEY (`item_id`) REFERENCES `item` (`item_id`), ADD CONSTRAINT `fkey_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`)
なぜかテーブルを作成できないぜというエラーになる
Error Code: 1005. Can't create table 'table_name.#sql-24e_6' (errno: 121)
原因
外部キー名をfkey_item_idとしたが、item_idという名前がテーブルのカラムとして使用されているのにindex化されていない
のが問題らしい。
対策
外部キー名を変更したらエラーは発生しなくなった。
ALTER TABLE `some_table` ADD CONSTRAINT `fkey_item` FOREIGN KEY (`item_id`) REFERENCES `item` (`item_id`), ADD CONSTRAINT `fkey_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`)