繁体   English   中英

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

[英]Heroku db:pull 'db:pull is not a heroku command'

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

完整的错误消息是

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

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

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

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

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

脚步

第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最近分叉了水龙头,并整合了一些最重要的补丁。 如果你正在寻找一个简单的开箱即用安装,他已经命名他的宝石“水龙头”。

这仍然是可能的。 赶紧跑

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

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

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

gem install heroku taps sequel

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

如果你还有问题,请看看这个: https//github.com/heroku/heroku-legacy-taps

祝好运!

我曾经使用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

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

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

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

你试过pg:pull吗?

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

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

请参见https://github.com/heroku/heroku-pg-extras/issues/42

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

我在这里找到了答案,但我把它放在了一个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

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

暂无
暂无

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

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