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

即使我使用了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组合键关闭服务器。

笔记

  • 这会将我的生产数据库拉入本地SQLite数据库。 当然,如果您在本地使用MySQL或其他东西,只需将sqlite URI替换为等效的MySQL URI即可。
  • 点击需要您设置用户名/密码。 因为我只是在本地运行一小段时间,所以我只使用“db”。 如果您更改这些,则还需要更新步骤2的URL中的用户名/密码。
  • 您也可以使用taps push数据复制到生产服务器,尽管您显然应该谨慎行事。
  • 由于维护者缺乏活动,Taps有一些随着时间的推移而获得的错误:
    • 最大的烦恼是它将OKJson机架纳入Rack后停止工作 。 Rack中的OKJson与tap中包含的修改版本冲突。 我创建了一个补丁来解决这个问题,但没有做任何活动来合并它。 与此同时,解决方法包括强制使用较早的机架。 Paxa通过修改bin / taps文件提出了一种简单的方法 。 如果您不想修改系统上已打包的已安装文件,您也可以按照hax8or的说明使用bundler来强制使用正确版本的Rack 。
    • 进度条无法正确呈现。 fd在他的拉动请求中解决了这个问题,但它还没有被合并。因为这纯粹是装饰性的,你可以忽略不良输出。

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

这仍然是可能的。 赶紧跑

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

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

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

 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

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

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

我发现db:push&pull移动单个例如静态数据表从dev到staging到staging的能力是非常宝贵的 – 现在看起来你需要创建一个新的空数据库并对其进行整个转储然后运行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

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