MySQL の create index で Duplicate key name する条件
いつも、Railsのmigrationにまかせっきりの create index 構文で生成される index名 が重複エラーする条件ってなんだろう・・・ということで調べてみました。
テスト環境
MySQL | 4.1.22 |
前提条件
hoges と fugas というテーブルがあり、それぞれ、idとnameというカラムを持っている。
テスト
hogesのnameカラムにindexを張ります。index_name は hoge_index です。
mysql> create index hoge_index ON hoges(name); Query OK, 0 rows affected (0.18 sec) Records: 0 Duplicates: 0 Warnings: 0
当然成功です。次に、もう一度、同じコマンドを実行します。
mysql> create index hoge_index ON hoges(name); ERROR 1061 (42000): Duplicate key name 'hoge_index'
Duplicate key name です。同じテーブルで同じ名前のindex_name は使えません。
次に、fugasのnameカラムにindexを張ります。index_name は hoge_index です。
mysql> create index hoge_index ON fugas(name); Query OK, 1 row affected (0.00 sec) Records: 1 Duplicates: 0 Warnings: 0
indexを張ることが出来ました。同じindex_nameでもテーブルが違えば大丈夫なのですね。
一応、もう一度同じコマンドを打ちます。
mysql> create index hoge_index ON fugas(name); ERROR 1061 (42000): Duplicate key name 'hoge_index'
もちろん。Duplicate key name です。