繁体   English   中英

为什么Heroku不下载带有“ Heroku db:pull”的数据库更新?

[英]why Heroku does not download database updates with 'Heroku db: pull'?

我已经运行“ heroku db:push”来下载heroku db更新,它显示了错误:

点击加载错误:没有要加载的此类文件--sqlite3
您可能需要安装或更新taps gem才能使用db命令。
在大多数系统上,这将是:
sudo gem安装水龙头

我已经安装了heroku 2.25.0,点击了0.3.24,我更改了Gemfile,将gem sqlite3替换为:

小组:发展,:测试
gem'sqlite3'
结束
小组:生产做
宝石'pg'
结束

我认为这是sqlite e postgresql之间的数据库兼容性问题。

可能吗? 或者是什么?

首先,通过运行bundle install确保您的gem是最新的。 如果一切正常,它不会有任何伤害,因此您可以确保。

之后,您应该能够使用db:pull通过以下代码片段将副本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时才如此。 如果您对此有疑问,请访问以下链接。

当您运行heroku命令时,它在开发计算机上本地运行。 因此,使用了Gemfile的development组:

group :development, :test do
  gem 'sqlite3'
end

由于它包含sqlite3 ,因此您需要在开发机器上安装sqlite3 gem。 您是否运行过bundle install在本地安装此gem? 您可能需要在bundle exec调用中运行heroku命令,以确保已加载gem:

bundle exec heroku db:pull

最后,如果要下载Heroku DB,则应使用db:pull而不是db:push

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM