目次
index name … too long というエラーが出た
Railsでマイグレーションをしたいときに、rails db:migrate
とコマンドを打ちますが、そのときにindex name … too longというエラーが出たのでこの対処法をこの記事に記載しておく。
エラーの内容として、index名が長すぎるよという内容になるらしい。
もっと具体的なエラーの内容はこちら
Index name 'index_**************************_on_********id' on table '**************************' is too long; the limit is 64 characters
/api/db/migrate/20220427091308_************************************.rb:3:in `change'
Caused by:
ArgumentError: Index name 'index_**************************_on_*********id' on table '**************************' is too long; the limit is 64 characters
/api/db/migrate/20220427091308_create_**************************:3:in `change'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
こんな感じのエラーが出た。is too longとあるので、長いだろと怒られているらしい。
対処法
対処法はいくつかあるみたいだが、今回の僕が作成したmigrationmファイルでは、t.referencesで、indexが自動的に貼られるようにしている。そこで、そのt.referencesの行にindex名の名前を変更してくれるよう記述を追加した。
具体的なmigrationファイルの内容
class Create********************* < ActiveRecord::Migration[7.0]
def change
create_table :********************, comment: "テーブル名" do |t|
t.references :*****_group, index: { name: '自分でindex名を入力' }, null: false, forgin_key: true, comment: "*****グループid"
t.integer :**********, null: false, comment: "**********"
t.integer :**********, null: false, comment: "**********"
t.decimal :**********, null: false, comment: "*************"
t.timestamps
t.datetime :deleted_at
end
end
end
こんな感じになった。
t.references :*****_group, index: { name: '自分でindex名を入力' }, null: false, forgin_key: true, comment: "*****グループid"
ここが重要で、, index: { name: ‘自分でindex名を入力’ }と追記することで、index名を変更することができる。
ほかの対処法
ちなみにadd_indexと書いて対処する方法もあるので、知りたい方は以下のQiita記事を参考にするとよいでしょう。
以上。