5

なぜこれが起こっているのかわかりません。次の移行があります。

def self.up
  create_table :leakages do |t|
    t.integer :feature_id
    t.integer :project_id
    t.float :total
    t.date :apt_date
  end
  add_index :leakages, [:feature_id, :apt_date]
end

初めて実行すると正しく実行されますが、移行を再度実行すると、leakagesテーブルが既に存在するというエラーがスローされます。なぜこのエラーが発生するのですか? mysql2 gem を使用しています。

4

4 に答える 4

2

移行に対応するものself.downはありますか? leakagesそうでない場合は、メソッドを に変更できます。その後、最後の移行で実行されるものdef changeを実行できるはずです。rake db:migrate:redodb:migrate:downdb:migrate:up

このメッセージが表示される理由は、テーブルが既に存在するためです。 rake db:migrateテーブルをドロップしません。基本的に、現在の環境でまだ実行されていない移行を実行します。

http://guides.rubyonrails.org/migrations.html#running-specific-migrationsを読むことにも興味があるかもしれません。

したがって、移行を再実行するには (つまり、db:migrate:down の次に db:migrate:up)、次のコマンドを実行できます。

rake db:migrate:reset VERSION={your migration version}
于 2013-07-18T06:24:18.583 に答える