0

さて、私は大きな間違いを犯し、いくつかの移行をローカルで削除しました (今ではよくわかりました)。Heroku にデプロイしようとすると、次のエラーが発生するため、これは問題になりつつあります。

Running `rake db:migrate` attached to terminal... up, run.3430
rake aborted!
Multiple migrations have the name CreateScores
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/migration.rb:978:in `validate'

「スコアの作成」という名前の移行が 1 つしかないため、最初は驚きましたが、次のことに気付きました。

Drews-MacBook-Pro:quiz drewwyatt$ rake db:migrate:status

database: /Users/drewwyatt/Sites/Ruby/Rails/quiz/db/development.sqlite3

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20130828212225  Create answers
   up     20130828212306  Create questions
   up     20130829210727  Create quizzes
   up     20130829211302  Remove quiz id from question
   up     20130829212349  Create assignments
   up     20130829234338  Create employees
   up     20130829234541  Add role and active to employee
   up     20130830032801  ********** NO FILE **********
   up     20130902183412  ********** NO FILE **********
   up     20130902183530  Create scores
   up     20130902230036  Add indexes to score
   up     20130904210011  Create positions
   up     20130904212007  Add position to employee
   up     20130905161805  Create quiz assignments

私の推測では、削除された移行の 1 つにも「スコアの作成」という名前が付けられていました。私の質問は、削除された 2 つの移行を削除するにはどうすればよいですか?

4

2 に答える 2

2

迅速な解決策として、すべての移行を一度に移行するのではなく、移行ファイルの各バージョンを 1 つずつ移行できます。

rake db:migrate:up VERSION=version_of_the file

このリンクを確認してください:単一の移行ファイルを実行する

于 2013-09-11T17:46:25.737 に答える
1

エラーが発生している移行のすぐ上のバージョンにロールバックします。以下に示すようにそれを行うことができます。

rake db:migrate:down VERSION=20130829234541

root/db/migrate フォルダーに存在する場合は、エラーに関連する参照を削除します。

その後、移行を再度実行します。大丈夫だよ。

于 2013-09-11T18:11:12.457 に答える