Heroku db:拉'db:pull不是heroku命令'

时间:2013-10-02 19:52:35

标签: ruby-on-rails ruby heroku

即使我使用了heroku db,我也收到了这条消息:拉百万次。出于某种原因,即使我甚至没有触及我的代码,它也不再有效。有什么想法吗?

完整的错误消息是

db:pull不是heroku命令。 也许你的意思是pg:pull 有关可用命令的列表,请参阅heroku help

7 个答案:

答案 0 :(得分:17)

目前,我们仍然可以使用heroku-legacy-tap,直到水龙神决定取消配置水龙头服务器。

运行:heroku plugins:install https://github.com/heroku/heroku-legacy-taps.git

然后像往常一样继续db:pushdb:pull工作流程。 (感谢GantMan提示)

答案 1 :(得分:6)

由于点击服务器将在未来的某个时间点退役,因此该插件可能不是最好的长期解决方案。但当然你可以运行自己的水龙头服务器。

步骤

第1步:启动点击服务器

taps server `heroku config:get DATABASE_URL` db db

第2步:运行点按客户端

在另一个shell中:

taps pull sqlite://db/development.sqlite3 http://db:db@localhost:5000

第3步:关闭点击服务器

导入完成后,您可以使用普通的Ctrl-C组合键关闭服务器。

备注

@wijet最近forked点击并整合了一些最重要的补丁。如果您正在寻找一种易于开箱即用的安装方式,他已将自己的宝石命名为“水龙头”。

答案 2 :(得分:2)

这仍然是可能的。跑吧

heroku plugins:install https://github.com/heroku/heroku-taps.git

你将能够做你的经典之作,它现在只是一个插件。

如果您遇到麻烦,可能需要确保安装了其他一些宝石。您还可以运行以下内容以确保:

gem install heroku taps sequel

我希望这有帮助!我喜欢DB:推/拉就像世界其他地方,我很伤心看到它去

如果您仍有问题,请查看以下内容:https://github.com/heroku/heroku-legacy-taps

古德纳克!

答案 3 :(得分:2)

我曾经使用过db:pull,但效果很好。删除后,我尝试了pg:pull,但这对我不起作用。

我发现了一个不同的解决方案。 如果您的本地数据库是PostgreSQL,并且您启用了pgbackups插件,那么这是我用来将远程数据库复制到本地计算机的命令序列:

$ wget "`heroku pgbackups:url --app app-name`" -O backup.dump
$ # Create the local database first, if it's not created yet. Then:
$ pg_restore -d database-name -c backup.dump -U database-user-name -O --no-acl -h localhost

用您自己的信息替换app-name,database-name和database-user-name。

您可能希望在提取数据之前让heroku进行备份:

heroku pgbackups:capture --expire

否则,无论何时进行自己的备份,都可以获得数据。

答案 4 :(得分:0)

这是我尝试db:pull时收到的错误消息。

  

db:pull不是heroku命令    也许你的意思是pg:pull    有关可用命令的列表,请参阅heroku help

你试过pg:pull吗?

用法:heroku pg:pull <REMOTE_SOURCE_DATABASE> <LOCAL_TARGET_DATABASE>

答案 5 :(得分:0)

看起来db:pull等已被弃用&amp;移动

请参阅此处https://github.com/heroku/heroku-pg-extras/issues/42

我发现db:push&amp;的能力拉动单个例如静态数据表向上移动从开发到分段到生产是非常宝贵的 - 现在看起来你需要创建一个新的空数据库并对其进行整个转储,然后运行pg命令来移动单个表

答案 6 :(得分:0)

我在这里找到了答案,但我把它放在了一个rake任务中。我认为这是处理这种情况的明智方法。如果你正在运行postgres的本地实例来使用Heroku上的postgres,你可以尝试这样的事情:

# lib/tasks/database.rake

namespace :database do
  desc "Gets the database from heroku and restores it to development"
  task :pull => :environment do
    dumpfile =  'tmp/latest.dump'
    db_config = Rails.application.config.database_configuration[Rails.env]
    File.delete(dumpfile) if File.exist?(dumpfile)
    `heroku pgbackups:capture --app app-name-here`
    system("curl -o #{dumpfile} `heroku pgbackups:url --app app-name-here`")
    `pg_restore --verbose --clean --no-acl --no-owner -h localhost -d #{db_config['database']} #{dumpfile}`
  end
end

现在,只要我想将生产数据提取到dev中,我就可以运行rake database:pull

这是一个非常基本的解决方案,但在我的情况下我只需要它做一件事。