Ruby on rails Rails/Heroku-放下的桌子和罐子';我拿不回来

Ruby on rails Rails/Heroku-放下的桌子和罐子';我拿不回来,ruby-on-rails,postgresql,heroku,psql,Ruby On Rails,Postgresql,Heroku,Psql,我把我的迁移/schema/db搞得一团糟,似乎弄不明白这一点 在当地,我有一个评论表。我需要完全重组这个表,所以我打开了我最初的“创建注释表”迁移,并手动修改了它。然后,我修改了schema.rb文件以匹配迁移。然后我运行了rakedb:reset并重建了我的数据库,然后rakedb:migrate来完成它 这在我的本地开发环境中似乎运行良好。然而,当我推到heroku时,我运行了heroku pg:psql,并删除了我的注释表。然后我运行了heroku run rake db:migrate

我把我的迁移/schema/db搞得一团糟,似乎弄不明白这一点

在当地,我有一个评论表。我需要完全重组这个表,所以我打开了我最初的“创建注释表”迁移,并手动修改了它。然后,我修改了
schema.rb
文件以匹配迁移。然后我运行了
rakedb:reset
并重建了我的数据库,然后
rakedb:migrate
来完成它

这在我的本地开发环境中似乎运行良好。然而,当我推到heroku时,我运行了
heroku pg:psql
,并删除了我的
注释
表。然后我运行了heroku run rake db:migrate,认为它会重建comments表,但事实并非如此。comments表已不存在,我不知道如何重新创建它。我的heroku数据库中除了users表之外没有任何重要的内容,所以我无法重置整个数据库


如何重新创建该表,并确保它与我推送到heroku的迁移文件匹配?

首先,您不应该返回到旧的迁移并手动更改它们。只需使用此处定义的更改执行新迁移。请在此处阅读有关迁移的内容:

这样做是为了避免您遇到当前的问题。这也是一种不好的做法,如果你在一个小组里工作,就会造成完全的混乱。很难准确地说出您的本地机器和heroku之间的区别以及您所做的更改。我的建议是回滚您的本地计算机和heroku,并使用您的更改进行新的迁移

我假设您使用的是git,这样您就可以在更改本地计算机上的create_comments_表之前返回到以前的版本。你可以在Heroku做同样的事情

https://dashboard.heroku.com/apps/nameofyourapp/activity
在仪表板中,您可以单击应用程序并转到“活动”选项卡。在那里,heroku保存了一份您推动的更改的记录。通过将鼠标悬停在版本上,可以回滚到以前的另一个更改

现在您基本上已经在本地和heroku上重新启动了应用程序,您可以在comments表中定义要更改的迁移

您可能还对PG备份附加组件感兴趣。这样你就不会担心丢失数据了

这也是为什么在部署任何内容之前,您应该始终拥有生产数据库的完整备份。