我目前正在http://ruby.railstutorial.org/处完成Ruby on Rails教程,我正在尝试将demo_app数据库迁移到heroku。
heroku rake db:migrate
rake aborted!
unable to open database file
我已阅读其他stackoverflow帖子,有些人通过输入
来解决这个问题group :production, :staging do
gem "pg"
end
group :development, :test do
gem "sqlite3-ruby", "~> 1.3.0", :require => "sqlite3"
end
宝石文件中的。我也将它输入到我的gemfile中,然后删除了我的旧gemfile.lock并重新编写了我的bundle install AND rake db:migrate命令。我仍然收到同样的错误。
我显然是ruby,rails和heroku的新手,但我明白问题似乎是我在本地使用sqlite和在生产中使用postgresql(在heroku上)。我现在必须将此postgresql安装到我的机器上,然后重新迁移数据库吗?如果我不能使用heroku,恐怕我将无法从教程中获得更多(或ruby on rails本身)。
答案 0 :(得分:2)
杀了它!
我遇到了同样的问题但没有找到解决方案。我认为我们在这些教程中正在做的事情是导致我们破坏heroku生成的database.yml文件。
我最终摧毁了我的heroku app
heroku destroy
然后创建一个新副本,推送一个新副本,然后运行
heroku create
git push heroku master
heroku rakedb:migrate
这一次一切正常!只需确保您的gemfile中有pg gem用于生产
group :production do
gem "pg"
end
并将config / database.yml添加到您的.gitignore文件中,以获得良好的衡量标准。
答案 1 :(得分:0)
或者如果它在本地工作正常做一个heroku db:push将你的本地sqlite DB神奇地放入Heroku的postgresql db中。
我总是在本地使用相同的数据库平台,所以我不会遇到任何差异(通常只在你开始做特定于数据库的SQL时),所以我也在本地运行Postgresql。
答案 2 :(得分:0)
有同样的问题......使用Heroku界面...运行: heroku rake db:migrate --trace
并发现问题与faker有关,而不是被发现...因为我们的Gemfile中的'faker'被加载到开发组中,所以我也将它加载到生产组中。 保存了Gemfile 捆绑安装 git add。 git commit -m“fixed faker” git push git heroku推 heroku rake db:migrate heroku rake db:填充
现在一切正常......问题,现在是如何处理我的生产网站上的100个用户? 至少我可以继续使用Hartl的教程!!