【发布时间】:2015-06-27 12:02:54
【问题描述】:
我需要将 db 从 app_1 转移到 app_2
我在 app_1 上创建了备份
然后跑:
heroku pg:backups restore HEROKU_POSTGRESQL_COLOR --app app_2 heroku 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:restore HEROKU_POSTGRESQL_COLOR --app app_2 heroku 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 但 heroku update 仅适用于 heroku 工具带,并且我安装了 gem。
解决办法:
安装 Heroku 工具带here
然后卸载gem:
gem uninstall heroku --all
运行以下命令获取版本,它应该输出heroku-toolbelt,而不是gem,更多信息here
$ 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 数据库
【问题讨论】:
-
如果您要从一个应用程序移动到另一个应用程序,那么为什么不在新应用程序中指定旧应用程序的数据库 url。这样你的新应用就会使用旧应用的数据库
-
你想知道更多关于如何做到这一点的信息吗?
-
检查我的更新答案
-
这是一篇旧帖子,但如果您还在:请从问题帖子中删除该“解决方案”,并将其粘贴到新的答案帖子中,然后接受该答案。如果答案是可以被投票并因此在搜索排名中被推高的实际答案,那么搜索 SO 的人的生活就会变得更加轻松。
标签: postgresql heroku