为什么Heroku不使用'Heroku db:pull'下载数据库更新?

时间:2012-05-14 12:50:08

标签: ruby-on-rails ruby sqlite postgresql heroku

我已经运行'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之间兼容性数据库的问题。

有可能吗?或者可能是什么?

2 个答案:

答案 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