12

即使我使用了 heroku db:pull 一百万次,我也会收到此消息。出于某种原因,即使我什至没有碰过我的代码,它也不再起作用。有任何想法吗?

完整的错误信息是

db:pull不是heroku 命令。也许您的意思是pg:pull 查看heroku help可用命令的列表。

4

7 回答 7

17

目前,我们仍然可以使用 heroku-legacy-taps,直到 Taps 之神决定取消配置 Taps 服务器。

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

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

于 2013-10-16T09:40:38.653 回答
6

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

脚步

第 1 步:启动您的 Taps 服务器

taps server `heroku config:get DATABASE_URL` db db

第 2 步:运行 taps 客户端

在不同的外壳中:

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

第 3 步:关闭 Taps 服务器

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

笔记

@wijet 最近分叉了水龙头并合并了一些最重要的补丁。如果您正在寻找一种简单的开箱即用安装,他将他的 gem 命名为“taps-taps”。

于 2013-10-16T18:42:28.030 回答
2

这仍然是可能的。赶紧跑

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

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

如果您仍然遇到问题,您可能需要确保安装了其他一些 gem。您还可以运行以下命令以确保:

gem install heroku taps sequel

我希望这有帮助!我喜欢 db:push/pull 就像世界其他地方一样,看到它消失我很难过。

如果您仍然遇到问题,请查看以下问题:https ://github.com/heroku/heroku-legacy-taps

祝你好运!

于 2013-10-14T22:40:48.047 回答
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

否则,您会从它自己的备份中获取数据。

于 2014-03-24T16:25:34.247 回答
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

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

于 2015-01-13T20:52:24.457 回答
0

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

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

你试过pg:pull吗?

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

于 2013-10-02T20:26:31.933 回答
0

看起来 db:pull 等已被弃用和移动

见这里https://github.com/heroku/heroku-pg-extras/issues/42

我发现 db:push & pull 将单个例如静态数据表从 dev 到 staging 到 production 向上和向下移动的能力是非常宝贵的 - 现在看起来你需要创建一个新的空数据库并将整个转储到它和然后运行 ​​pg 命令来移动单个表

于 2013-10-14T11:03:54.110 回答