[Rails] Heroku標準のPostgreSQLへのdb:migrateをやり直す方法

Herokuで強制的にdb:migrateをやり直す方法を調べたのでメモ。

まず、HerokuではRails標準のrake db:resetは使えません。

代わりに、pg:resetコマンドで Herokuの標準のpostgresのDBをリセットすることができます。

$ heroku pg:reset --db SHARED_DATABASE_URL

コマンド実行後、確認のためプロンプトが表示されるので、アプリ名を入力するとリセットが実行されます。

ちなみに、SHARED_DATABASE_URLは以下のコマンドで確認できます。

$ heroku console
Ruby console for codenote.heroku.com
>> ENV['DATABASE_URL']
=> "postgres://username:[email protected]/dbname"

・参考:Heroku | Dev Center | PostgreSQL はてなブックマーク - Heroku | Dev Center | PostgreSQL
 

他にも、db:migrateをやり直す方法があり、VERSION=0 を指定することで最初にdb:migrateする前の初期状態に戻すことができます。

(最初にdb:migrateしたときのマイグレーションファイルが存在することが前提)

$ heroku rake db:migrate VERSION=0

また、db:migrate:redo で何回か前の状態(STEP=回数)に戻すこともできます。

$ heroku rake db:migrate:redo STEP=10

以上です。

【参考】

[Rails][Heroku] Herokuで強制的にdb:migrateをやり直す。その2 – mat_akiの日記 はてなブックマーク - [Rails][Heroku] Herokuで強制的にdb:migrateをやり直す。その2 - mat_akiの日記

Herokuで強制的にdb:migrateをやり直す。 – このブログは証明できない。 はてなブックマーク - Herokuで強制的にdb:migrateをやり直す。 - このブログは証明できない。

Ruby on Rails Guides: Migrations はてなブックマーク - Ruby on Rails Guides: Migrations