[英]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:push
和db: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组合键关闭服务器。
taps push
将数据复制到生产服务器,尽管您显然应该谨慎使用。 @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.