移行ファイルを削除/削除したいのですが。どうすればいいですか?私はここに同様の質問があることを知っていますが、更新として、スクリプト/破棄を行うよりも良い方法はありますか?
また、私がやるべきdb:reset
か、db:drop
私は削除する場合は/移行を削除しますか?
移行ファイルを削除/削除したいのですが。どうすればいいですか?私はここに同様の質問があることを知っていますが、更新として、スクリプト/破棄を行うよりも良い方法はありますか?
また、私がやるべきdb:reset
か、db:drop
私は削除する場合は/移行を削除しますか?
回答:
私は通常:
rake db:migrate VERSION=XXX
私は削除する1前のバージョンに、すべての環境で。rake db:migrate
もう一度新しい移行を実行します。アプリケーションがすでに本番環境またはステージング環境にある場合は、テーブルまたは列を破壊する別の移行を作成する方が安全です。
移行に関するもう1つの優れたリファレンスは次のとおりです。http://guides.rubyonrails.org/migrations.html
self.down
データベースを「ダウングレード」するには、移行で定義されたメソッドを呼び出す必要があります。
rake db:migrate:status
、欠落しているファイルのIDが表示されます。これを使用して、ファイルを再作成できます。それが戻ったら、この回答のアドバイスに従って勝利することができます。
db:migrate:status
命の恩人です!
移行を削除する別の方法:
$ rails d migration SameMigrationNameAsUsedToGenerate
rake db:migrate
データベースの変更は永久に残るので、実行前にそれを使用します:)-または手動で変更を削除します
アプリのホームディレクトリから以下のコマンドを実行します。
rake db:migrate:down VERSION="20140311142212"
(ここでのバージョンは、移行が作成されたときにrailsが前に付加されたタイムスタンプです。このアクションは、この移行によるDBの変更を元に戻します)
Run "rails destroy migration migration_name"
(migration_nameは、マイグレーションの作成時に選択した使用法です。マイグレーションファイル名から「timestamp_」を削除して取得してください)
rails d migration migration_name
次のようなダウンマイグレーションを実行することもできます。
rake db:migrate:down VERSION=versionnumber
詳細については、移行に関するRuby on Railsガイドを参照してください。
これはRails 5でも機能します。
マイグレーションが最新のマイグレーションであった場合は、マイグレーションによって追加されたデータベース列を削除できます。
rake db:rollback
次に、次のコマンドを実行して、移行ファイル自体を削除します。
rails d migration WhateverYourMigrationWasNamed.rb
削除したい移行が欠落していたため、これらの答えのどれもが私が抱えていた問題に完全に適合していません。他のブランチで移行を作成して実行し、その後破棄しました。問題は、移行が実行されると、Railsがバージョンをschema_migrations
データベースのテーブルに追加することです。そのため、db構造またはスキーマにリストされていなくても、railsはそれを探します。これらの孤立した移行を実行するには、次のコマンドを実行します。
rails db:migrate:status
欠落しているマイグレーションのバージョンをメモし、dbコンソールに移動します。
rails dbconsole
次に、移行テーブルから手動でバージョンを削除します。
delete from schema_migrations where version='<version>';
あなたは今良いはずです。