我最近做了Heroku请求的数据库从“共享数据库”迁移到Postgres。我仔细地遵循了Heroku的指示,直到最后一步一切顺利:删除旧的共享数据库。那时,我的应用程序因“出错了”的消息而崩溃了,自那以后它就一直在下降(现在已经过了两周)。
请注意,在我切换到新数据库的步骤之后,应用程序仍在工作,并且根据“heroku config”,它正在使用新数据库。它不应该关心旧的消失。日志只说500错误。
我向Heroku提交了一份紧急支持请求,但他们没有帮助。他们只是说我的数据仍然存在但是,“你的应用程序没有记录,所以不清楚为什么会发生这种情况,但似乎并不是由于迁移造成的。”那是一个星期前,所以看起来他们不会做更多的事情。
我同意这个问题不应该是由于迁移造成的,但考虑到除了迁移之外我没有对应用程序进行任何更改,并且当我删除旧数据库时它确实死了,我看不到还有什么可能。
我的应用程序此时可能已经很老了(Rails 3.0.3),所以我现在唯一想到的是将所有内容更新到最新版本并重新部署。该应用程序用于记录我们当地的童子军队伍的优异徽章和等级提升,所以我真的需要让它再次运行。任何建议都将不胜感激。
答案 0 :(得分:2)
我的第一直觉是db:拉出heroku托管数据库。 (制作副本)。
然后尝试在本地启动您的应用。
答案 1 :(得分:1)
Heroku解决了这个问题。我的假设是正确的:我的应用程序太旧了,以至于迁移过程实际上没有更新它以使用新数据库。他们说他们现在会将修复程序应用到其他旧应用程序中。
答案 2 :(得分:0)
如果应用程序在您删除共享数据库时失败,则意味着您的应用程序仍然连接到此数据库,并且从未连接到新数据库。听起来像你没有跑heroku pg:promote HEROKU_POSTGRESQL_<color of new database> --app <your-app>
。你能试试吗?
编辑:
根据您评论中提供的进一步信息,这可能是白杨和竹子堆中的潜在问题(仅影响少数客户)。现在要尝试的是新部署。尝试进行一些微不足道的更改 - 可能是项目自述文件中的换行符 - 并再次部署应用程序。这将强制重新编译,使用正确的DB写出新的database.yml。
更好的是通过
迁移到雪松堆栈