サイトアイコン Lonely Mobiler

Rails で db:migrate するときに Index name 'hoge' on table 'fuga' is too long と言われた

今開発中の Rails アプリでモデルを新規作成し、rake db:migrate しようとしたところ、以下のようなエラーが出た。

Index name HOGEHOGE on table TABLENAME is too long; the limit is 64 characters

どうやらインデックス名が長すぎるというエラーメッセージのようだ。Rails ではインデックスを付ける際にインデックス名を省略して指定できるのだが、省略した場合のインデックス名は

index_TABLE_NAME_COLUMN_NAME1_COLUMN_NAME2...

のように指定したカラム名を並べたのもになってしまい、状況によってはインデックス名の長さの制限に引っかかってしまう。

こういう場合は以下のようにインデックスを付ける際に名前を明示的に指定してやると良い。

add_index "table_name", ["hoge_id", "fuga_id"], name: "index_table_hoge_fuga"

これで db:migrate すれば OK.

Sponsored Link
モバイルバージョンを終了