Ошибка при выполнении миграции (имя индекса уже существует) - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь перенести свое последнее обновление моего сайта, используя ruby ​​on rails.

, но, похоже, произошла ошибка при выполнении миграции.

    Index name 'index_jasa_images_on_jasa_id' on table 'jasa_images' already exists/home/lukni/.rvm/gems/ruby-2.3.1/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract/schema_statements.rb:936:in `add_index_options'

это мой файл миграции 20190613073018_create_jasa_images.rb

    class CreateJasaImages < ActiveRecord::Migration
      def change
        create_table :jasa_images do |t|
          t.references :jasa, index: true, foreign_key: true
          t.string :image
          t.timestamps null: false
        end
      end
    end

Ответы [ 3 ]

0 голосов
/ 19 сентября 2019

Вы можете сделать одну вещь: сначала консоль rails удаляет индексы этого поля

ActiveRecord::Migration.remove_index "jasa_images", name: "index_jasa_images_on_jasa_id"

, затем вы можете добавить новый индекс в файл миграции

create_table :jasa_images do |t|
 ...
end

add_index : jasa_images, :jasa_id, name: 'index_name'
0 голосов
/ 19 сентября 2019

Чтобы расширить ответ Кхана, вы можете добавить индекс после;и добавить unless index_exists?

create_table :jasa_images do |t|
  t.references :jasa
  t.string :image
  t.timestamps null: false
end

add_index : jasa_images, :jasa_id, name: 'your_custom_index_name' unless index_exists?(:jasa_images, :jasa_id)
0 голосов
/ 19 сентября 2019

хмм, вы можете попробовать add_index с помощью команды.

create_table :jasa_images do |t|
  t.references :jasa
  t.string :image
  t.timestamps null: false
end

add_index : jasa_images, :jasa_id, name: 'your_custom_index_name'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...