我已经运行'heroku db:push'来下载heroku db updates,它显示错误:
点击加载错误:没有这样的文件加载--sqlite3
您可能需要安装或更新taps gem才能使用db命令
在大多数系统上,这将是:
sudo gem install tap
我已经安装了heroku 2.25.0,点击了0.3.24,我更改了Gemfile,将gem sqlite3替换为:
组:开发,:测试
gem'sqlite3'
结束
组:生产做
宝石'pg'
结束
我认为这是sqlite e postgresql之间兼容性数据库的问题。
有可能吗?或者可能是什么?
答案 0 :(得分:1)
首先,通过运行bundle install
确保您的宝石都是最新的。如果一切都很好就不会受到伤害,所以你也可以确定。
之后,您应该可以使用db:pull
使用以下代码段将副本提取到本地计算机:
bundle exec heroku db:pull sqlite://local.db --app my_app
如果由于某种原因这不起作用,您可以在拉动数据库的同时更改Gemfile - 然后如果您愿意,可以将其更改回来。
group :development, :test do
gem 'sqlite3'
# add this next line and run 'bundle install' until you get db:pull to work
gem 'pg'
end
group :production do
gem 'pg'
end
(我相信这会有效,但我个人还没有尝试过。如果有问题请回复。)
最后,如果您在本地计算机上运行 ruby 1.9.3 ,那么推送和推送数据库会有一些问题 - 但只有在您执行db:push
时才会这样做。 If you have problems with that here's a link to the solution.
答案 1 :(得分:0)
运行heroku
命令时,它会在开发计算机上本地运行。因此,使用了Gemfile的development
组:
group :development, :test do
gem 'sqlite3'
end
由于它包含sqlite3
,因此您需要在开发计算机上安装sqlite3
gem。您是否运行bundle install
在本地安装此gem?您可能需要在heroku
调用中运行bundle exec
命令以确保加载了宝石:
bundle exec heroku db:pull
。
最后,如果您要下载Heroku数据库,则应使用db:pull
,而不是db:push
。