Ruby on Rails+OracleでMigration時に「ORA-00972」エラー
OracleにMigration中、以下のエラーが発生
Migrationファイル
def self.up add_index :hogehoge_groups, :hogehoge_id end def self.down remove_index :hogehoge_groups end
エラー
ORA-00972: 識別子が長すぎます。: DROP INDEX index_hogehoge_groups_on_hogehoge_id
何かと思い調べてみると、Oracleはテーブル名、カラム名などに30文字以上を設定することは出来ないらしい。(設定で変更できるかもしれないけど)
add_indexではデフォルトで「index_テーブル名+_on_+カラム名」で自動命名されてしまうのでこの制限に引っかかった。
以下のようにインデックスを別命名することで回避。
def self.up add_index :hogehoge_groups, :hogehoge_id, :name => "index_hg_on_hogehoge_id" end def self.down remove_index :hogehoge_groups, :name => "index_hg_on_hogehoge_id" end