私はDBダンプを読み込んだだけで、テーブルを作成しただけでなく、それらのテーブルにデータをロードしただけでなく、多くのマイグレーションが行われました。Railsは移行が実行されたことをどのように知っていますか?
残りの移行を実行した後で、rake db:migrate:status
を実行すると、移行のステータスはUP
であることがわかりますが、移行は実際には実行されていません。
たとえば、notes
という表を作成する移行があります。 up'edされており、テーブルnotes
は存在しません。だから私はredo
このマイグレーションに持っていたが、self.down
の方法でコードをコメントアウトしていた。
私の質問は次のとおりです。作成しようとしているテーブルがデータベースに作成されていないにもかかわらず、移行がUP
ステータスになることがあります。または、以前にロードしたDBダムが、schema_migrations
というような方法でテーブルにデータを格納していて、Railsはほとんどの場合移行がアップしていると考えているが、実際はそうではないと思う。
これで、手動で各マイグレーションをrake db:migrate:redo VERSION=xxxxxxx
する必要がありますか、それともより良い解決策がありますか?
でデータベースを作成しようとしている場合に備えて、RAILS_ENV = testを指定する必要があります。これは本当です!この実装のソースコードは、https://github.com/rails/rails/blob/f47b4236e089b07cb683ee9b7ff8b06111a0ec10/activerecord/lib/active_record/railties/databases.rake#L91にあります。 – Pavan