2017-07-08 15 views
0

に私は宝石acts-as-taggable-onをインストールし、それを出力し、このう:Rubyはレールの移行エラー

C:\Sites\novosti>rails db:migrate 
rails aborted! 
StandardError: An error has occurred, this and all later migrations canceled: 

Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release the migration was written for: 

    class ActsAsTaggableOnMigration < ActiveRecord::Migration[4.2] 
C:/Sites/novosti/db/migrate/20170708123900_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb:2:in `<top (required)>' 
bin/rails:4:in `require' 
bin/rails:4:in `<main>' 
StandardError: Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release the migration was written for: 

    class ActsAsTaggableOnMigration < ActiveRecord::Migration[4.2] 
C:/Sites/novosti/db/migrate/20170708123900_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb:2:in `<top (required)>' 
bin/rails:4:in `require' 
bin/rails:4:in `<main>' 
Tasks: TOP => db:migrate 
(See full trace by running task with --trace) 

だから、僕は[5.1]を追加し、それが問題を修正しましたが、別の1が

C:\Sites\novosti>rails db:migrate 
== 20170708123900 ActsAsTaggableOnMigration: migrating ======================== 
-- create_table(:tags) 
    -> 0.0028s 
-- create_table(:taggings) 
    -> 0.0033s 
-- add_index(:taggings, :tag_id) 
rails aborted! 
StandardError: An error has occurred, this and all later migrations canceled: 

Index name 'index_taggings_on_tag_id' on table 'taggings' already exists 
C:/Sites/novosti/db/migrate/20170708123900_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb:23:in `up' 
bin/rails:4:in `require' 
bin/rails:4:in `<main>' 
ArgumentError: Index name 'index_taggings_on_tag_id' on table 'taggings' already exists 
C:/Sites/novosti/db/migrate/20170708123900_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb:23:in `up' 
bin/rails:4:in `require' 
bin/rails:4:in `<main>' 
Tasks: TOP => db:migrate 
(See full trace by running task with --trace) 
が登場
+0

インデックス「index_taggings_on_tag_id」はすでに作成されているようです前回の失敗した移行)、DBから削除して、再度移行を実行してください。 – Gerry

答えて

1

テーブルのインデックス名は一意である必要があります。これはインデックスが既に存在するため、dbからのエラーです。移行前にデータベースのテーブルにインデックスを落とすか、インデックスがテーブル内で既にOKであればadd_indexを削除することができます

+0

'add_index'を削除しようとしましたが、' [5.0] 'を追加しました。別のエラーが発生しました。 提供されているオプションでタグ付けされたインデックスが見つかりません。 C:/Sites/novosti/db/migrate/20170709090702_add_missing_unique_indices.acts_as_taggable_on_engine.rb:7: 'アップで ' ビン/レール:4:'必要で':4: ' '

で と、ArgumentError:いいえ ビン/レールを提供されたオプションでタグ付けに見つかったインデックス。 C:/Sites/novosti/db/migrate/20170709090702_add_missing_unique_indices.acts_as_taggable_on_engine.rb:7: ':4: ビン/レール '必要に' を'に ビン/レール:4: –

+0

' '

にあなたが説明してもらえ私はあなたがそれをどのように使用するかについてもっと詳しく?私はあなたが操作の前にインデックスの事前存在をチェックしようとしていることを願っています、あなたは共有する/ラインをチェックできますか? – Charles

+0

私はそれを使用することができますが、私はそれを使用することはできません願っています私はdbを実行する必要があります:私はそれがインストールされたとき、インデックスが既に存在すること –

関連する問題