这个我花了一段时间才弄清楚。这非常棘手,似乎是 Heroku 中的一个错误,所以我会发布我自己的答案,以防它对某人有所帮助。
场景:
- 使用 postgresql 适配器的 Rails 应用程序在 localhost 上运行良好。
- 所有迁移都已完成。
- 通过“git push heroku master”部署到 Heroku 成功更新 Heroku 实例。
- Heroku PGBackups 插件已安装并且工作正常。
- pg_dump 用于生成本地数据库转储,并将文件上传到可访问的 Internet 位置。
问题:
运行后
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
在这个阶段执行 a 也不会解决问题。我还尝试了将其与heroku pg:reset
和结合使用heroku run rake db:migrate
。
为什么更新数据库中的数据会关闭应用程序?