heroku pg:pushに失敗する際の対処法
heroku pg:reset
をした後に、heroku pg:push
をしたらこんなメッセージが…。
! Remote database is not empty.
! Please create a new database, or use `heroku pg:reset`
いやいや、resetしとるやん…。原因はわからないけれど、ググってみたら同様の症状になっている人をちらほらと見かけました。 対処方法もあったので、備忘録のために残しておきます。
参考ページ: Can’t push database to heroku because database is not empty error
dumpファイルを作成する
まずはheroku pg:push
するつもりだったデータベースのdumpファイルを作成します。--no-acl --no-owner
をつけておかないといけません。
local_db_name
は適宜、自分の環境のデータベース名に変更してください。
pg_dump --no-acl --no-owner -h localhost local_db_name -f local_db_name.dump
psqlで流し込む
次に以下のコードを実行します。heroku_app_name
も適宜、自分のherokuアプリ名に変更してください。
heroku pg:psql --app heroku_app_name < local_db_name.dump
これで、heroku pg:push
と同等のことができました。