奇妙な問題に遭遇しました。インデックスの作成方法によっては、インデックス名が必要になります。
http://dev.mysql.com/doc/refman/5.5/en/create-index.html
http://dev.mysql.com/doc/refman/5.5/en/alter-table.html
CREATE INDEX `random_name` ON `my_table` (`my_column`); # Requires an index name
ALTER TABLE `my_table` ADD INDEX (`my_column`); # Does not require an index name
CREATE INDEXの呼び出しでは、インデックス名を必須にするべきではないようです。これがMySQLismなのか、SQL標準なのか疑問に思いますか?
SQL標準がhowを定義してインデックスを作成するとは思わないまったく。
このWikipediaページ からの引用:
標準化
ISO SQL標準は物理的な側面をカバーしていないため、インデックスの作成に関する標準はありません。インデックスは、ストレージ(テーブルスペースまたはファイルグループ)などのデータベース概念の物理的な部分の1つです。 RDBMSベンダーはすべて、顧客に提供する機能に依存するいくつかの特定のオプションを備えたCREATE INDEX構文を提供しています。
Postgresのマニュアルではこれをサポートしているようです:
SQL標準にはインデックスの規定はありません。