これは、理解するのにしばらく時間がかかりました。これはかなりトリッキーで、Heroku のバグのように思えるので、誰かの役に立つ場合に備えて、私自身の回答を投稿します。
シナリオ:
- postgresql アダプターを使用する Rails アプリケーションは、localhost で正常に動作します。
- すべての移行が完了しました。
- 「git push heroku master」を介して Heroku にデプロイすると、Heroku インスタンスが正常に更新されます。
- Heroku PGBackups アドオンがインストールされ、正常に動作します。
- pg_dump を使用してローカル db ダンプを生成し、ファイルをアクセス可能なインターネットの場所にアップロードしました。
問題:
走った後
heroku pgbackups:restore DATABASE_URL 'http://mywebsite.com/pgbackup.dump'
「問題が発生しました」というメッセージが表示されます。奇妙なことに、起こったのはデータベースのロードだけであり、データがローカル マシン上で正常に機能するデータベースでした。移行は実行されておらず、すべてが以前にコミットされており、コードの更新もありません...データベース内のデータのみが変更されたのに、データベース内のデータだけが変更された場合にアプリが機能しなくなるのはなぜですか?
明らかheroku logs
にそこにあるテーブルを見つけることができないことを示しています。次のような行:
ActionView::Template::Error (PG::UndefinedTable: ERROR: relation "users" does not exist
で検証すると、実際の結果が返されるheroku pg:psql
ため、状況がさらに奇妙になります。select * from users
この段階でを実行してもheroku restart
問題は解決しません。heroku pg:reset
それととの組み合わせも試しheroku run rake db:migrate
ました。
データベースのデータを更新するとアプリがシャットダウンするのはなぜですか?