Hatena::ブログ(Diary)

前人未踏の領域へ

2014-12-01

[]外部キー制約追加時の注意点

テーブル作成時に外部キーを追加しようとしたらエラーになったのでその対応メモ

現象

とあるテーブルに以下のような外部キーを追加するコマンドを実行

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`)

参考

http://stackoverflow.com/questions/3455805/mysql-alter-table-add-index-foreign-key-give-error-1005

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/takeR/20141201/1417392269
リンク元