我需要将数据库从 app_1 传输到 app_2
我在 app_1 上创建了备份
然后跑:
heroku pg:备份恢复 HEROKU_POSTGRESQL_COLOR --app app_2heroku pgbackups:url --app app_1
HEROKU_POSTGRESQL_COLOR = app_2 的数据库 URL
然后我得到:
! `pg:backups` is not a heroku command.
! Perhaps you meant `pgbackups`.
! See `heroku help` for a list of available commands.
所以我跑了:
heroku pgbackups:恢复 HEROKU_POSTGRESQL_COLOR --app app_2heroku pgbackups:url --app app_1
然后我得到以下信息:
! WARNING: Destructive Action
! This command will affect the app: app_2
! To proceed, type "app_2" or re-run this command with --confirm app_2
所以我确认了:
> app_2
! Please add the pgbackups addon first via:
! heroku addons:add pgbackups
然后我跑了:heroku addons:add pgbackups --app app_2
Adding pgbackups on app_2... failed
! Add-on plan not found.
有办法解决这个问题吗?任何帮助将不胜感激!
* 解决方案 *
我最终给 Heroku 发了电子邮件,他们建议我需要heroku update; heroku plugins:update
but heroku update
仅适用于 heroku toolbelt,并且我安装了 gem。
解决方案:
安装 Heroku 工具带here https://toolbelt.heroku.com/
然后卸载gem:
gem uninstall heroku --all
运行以下命令来获取版本,它应该输出heroku-toolbelt
,而不是宝石,更多信息here https://devcenter.heroku.com/articles/heroku-command
$ heroku --version
heroku-toolbelt/2.39.0 (x86_64-darwin10.8.0) ruby/1.9.3
要将数据库复制到:
heroku pg:backups restore `heroku pgbackups:url --app app_1` HEROKU_POSTGRESQL_COLOR --app app_2
但更好的是,您可以直接从一个数据库复制到另一个数据库,而无需备份:
假设 app_2 数据库 url 为:HEROKU_POSTGRESQL_GOLD
heroku pg:copy app_1::DATABASE_URL GOLD -a app_2
这会将主数据库从 app_1 复制到 app_2 上的 GOLd 数据库