我已将我的迁移/ schema / db搞砸到我似乎无法解决的问题。
在当地,我有一张评论表。我需要完全重构这个表,所以我打开了我最初的“创建注释表”迁移并手动修改它。然后我修改了schema.rb
文件以匹配迁移。然后我运行了rake db:reset
并重建了我的数据库,并rake db:migrate
完成了它。
这在我当地的开发环境中看似很好。但是,当我推送到heroku时,我运行了heroku pg:psql
并删除了我的comments
表。然后我跑heroku run rake db:migrate
认为它会重建评论表 - 它没有。评论表不再存在,我无法弄清楚如何重新创建它。对于users表,我的heroku数据库中没有任何重要的EXCEPT,所以我无法重置整个事情。
如何重新创建该表,并确保它与我推送到heroku的迁移文件相匹配?
答案 0 :(得分:1)
首先,您不应该回到旧的迁移并手动更改它们。只需使用其中定义的更改执行新迁移。阅读此处的迁移:http://guides.rubyonrails.org/migrations.html
这样做是为了避免遇到您目前遇到的问题。这也是不好的做法,如果你在一个小组工作,那将是完全的混乱。很难确切地知道本地机器和heroku之间的差异以及你改变了什么。我的建议是回滚本地计算机和heroku,并根据您的更改进行新的迁移。
我假设您正在使用git,因此您可以在更改本地计算机上的create_comments_table之前返回到以前的版本。你可以在
的Heroku中做同样的事情https://dashboard.heroku.com/apps/nameofyourapp/activity
在信息中心中,您可以点击您的应用并转到活动标签。 heroku记录了你所推动的变化。您可以通过将鼠标悬停在版本上来回滚到之前的其他更改。
既然您已经在本地和heroku上基本上重新启动了应用程序,那么您可以在注释表中定义要更改的内容的迁移。
您可能也对PG Backup插件感兴趣。那么你不会担心丢失数据。 https://devcenter.heroku.com/articles/pgbackups