0

数か月前に、heroku杉スタックの本番データベースを誤って削除してしまいました。を介してdbを再作成しようとしましたheroku run rake db:migrateが、移行に問題があり、失敗しました。それから私は蛇口を取り付けて、heroku db:pushそしてすべてが世界に正しかったことをしました。

ローカル移行を実行した後に本番データベースを更新するために使用できますheroku run rake db:migrateか、それともタップとに永遠に縛られていheroku db:pushますか?

おそらく、この質問をするためのより良い方法です。heroku run rake db:migrateすべての移行を実行する(そして失敗する可能性が高い)のでしょうか、それとも前回以降に発生した移行のみを実行するのheroku db:pushでしょうか。

4

1 に答える 1

0

schema_migrationsデータベースのテーブルを見てください。これは、Railsが実行する移行を決定するために使用するものです。Railsがアプリケーションに適用した各移行バージョンを含む単一の列があります。たとえば、次のファイルがありますdb/migrate

  • 20110415064108_create_users.rb

20110415064108schema_migrations私のテーブルに行としてリストされています。db/migrate最後に実行してから存在していた他のすべての移行ファイルについても同じことが言えますrake db:migrate

タップ(私は何も知りません)がこのテーブル全体を本番環境にプッシュしたと仮定すると、新しい移行を作成して本番環境で問題なくschema_migraions実行できるはずです(バージョン番号が生産テーブルから欠落している唯一のもの) 。rake db:migrateschema_migrations

于 2012-08-04T15:24:36.583 に答える