本地sql数据库和heroku postgres数据库文件不同,如何再次同步? Ruby on Rails

时间:2015-03-31 09:07:12

标签: ruby-on-rails database sqlite heroku railstutorial.org

我目前正在做Michael Hartl的Ruby on Rails教程。在某个地方,我搞砸了我的数据库。在我的数据库文件中,只有一个用户,名为Bob。

本地在cloud9 IDE中,当我执行“rails console'然后做Users.first,我得到一个名为" Bob"的用户。

然而,当我这样做时,heroku rails会运行console'并且当User.first,我得到一个具有不同名称的用户。 (我可能在路上某处更改了名称)

如何让Heroku再次查看正确的本地数据库文件?我应该清除heroku数据库,然后使用pg:pull将本地sql数据库拉到heroku吗?

2 个答案:

答案 0 :(得分:0)

您可以使用yaml_db gem将本地数据转储到文件中,然后将其上传到heroku。

在您的开发机器上:

rake db:data:dump

然后提交更改,推送到heroku并运行:

heroku run rake db:data:load

答案 1 :(得分:0)

不确定您是否已进入第9章,但本书的section 9.3.2涉及创建示例用户。这是通过db/seeds.rb文件完成的。

运行$ bundle exec rake db:reset然后重置您的数据库,然后重置$ bundle exec rake db:seed以填充新数据。

您可以使用以下命令在生产应用程序上运行相同的过程:

heroku pg:reset DATABASE
heroku run rake db:migrate
heroku run rake db:seed

当然,也可以使用heroku-pg-transfer之类的工具在本地数据库和生产数据库之间传输数据,但如果您只是刚刚开始,它会稍微提高一些,我想如果您只有一个用户可以转移,则不必要。

希望这有帮助。