首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Heroku将数据库从一个应用程序转移到另一个应用程序

Heroku将数据库从一个应用程序转移到另一个应用程序
EN

Stack Overflow用户
提问于 2015-04-21 00:30:07
回答 10查看 23.4K关注 0票数 48

我需要将数据库从app_1传输到app_2

我在app_1上创建了备份

然后运行:

heroku pg:backups restore HEROKU_POSTGRESQL_COLOR --app app_2 heroku pgbackups:url --app app_1

URL = app_2的数据库HEROKU_POSTGRESQL_COLOR

然后我得到:

代码语言:javascript
代码运行次数:0
运行
复制
 !    `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

然后,我得到了以下内容:

代码语言:javascript
代码运行次数:0
运行
复制
!    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

所以我确认了:

代码语言:javascript
代码运行次数:0
运行
复制
> app_2
 !    Please add the pgbackups addon first via:
 !    heroku addons:add pgbackups

然后我运行:heroku addons:add pgbackups --app app_2

代码语言:javascript
代码运行次数:0
运行
复制
Adding pgbackups on app_2... failed
 !    Add-on plan not found.

有没有办法绕过这个问题?任何帮助都将不胜感激!

*解决方案*

我最终给Heroku发了电子邮件,他们建议我需要heroku update; heroku plugins:update,但heroku update只对heroku工具带可用,而且我已经安装了gem。

解决方案:

安装Heroku工具带here

然后卸载gem:

代码语言:javascript
代码运行次数:0
运行
复制
gem uninstall heroku --all

运行以下命令以获取版本,它应该输出heroku-toolbelt,而不是gem,更多信息here

代码语言:javascript
代码运行次数:0
运行
复制
$ heroku --version
  heroku-toolbelt/2.39.0 (x86_64-darwin10.8.0) ruby/1.9.3

要复制数据库,请执行以下操作:

代码语言:javascript
代码运行次数:0
运行
复制
heroku pg:backups restore `heroku pgbackups:url --app app_1` HEROKU_POSTGRESQL_COLOR --app app_2

但更好的是-您可以直接从一个数据库复制到另一个数据库,而不需要备份:

假设app_2数据库url为:HEROKU_POSTGRESQL_GOLD

代码语言:javascript
代码运行次数:0
运行
复制
heroku pg:copy app_1::DATABASE_URL GOLD -a app_2 

这会将主数据库从app_1复制到app_2上的GOLd数据库

EN

回答 10

Stack Overflow用户

发布于 2015-04-21 22:59:46

只有一条命令可以将数据库从一个应用复制到另一个应用,现在你不需要备份了:

代码语言:javascript
代码运行次数:0
运行
复制
heroku pg:copy app_name_to_copy_from::database_color_to_copy_from database_color_to_copy_to --app app_name_to_copy_to

check it here

票数 104
EN

Stack Overflow用户

发布于 2015-04-21 00:50:38

如果你看看heroku docs,它会说

PG Backups as a add-on已弃用。这些命令作为Heroku Postgres命名空间的一部分存在于CLI中。新功能已上线并可供使用。

因此,您无需添加任何附加组件即可使用pgbackups functionality directly

要创建备份,可以运行以下命令

代码语言:javascript
代码运行次数:0
运行
复制
 heroku pg:backups capture --app app_name

如果您有多个数据库,则可以像这样指定数据库url

代码语言:javascript
代码运行次数:0
运行
复制
heroku pg:backups capture HEROKU_POSTGRESQL_PINK

要使用restore from a backup on another app,您可以运行

代码语言:javascript
代码运行次数:0
运行
复制
heroku pg:backups restore b001 DATABASE_URL --app app_name

您可以通过以下方式执行transfer database

代码语言:javascript
代码运行次数:0
运行
复制
heroku pg:copy DATABASE_URL HEROKU_POSTGRESQL_PINK_URL --app app_name

您也可以通过以下方式在另一个应用程序上使用upload your database to a public url and then use that url to import database

代码语言:javascript
代码运行次数:0
运行
复制
heroku pg:backups public-url b001 --app app_name

然后对它执行import

代码语言:javascript
代码运行次数:0
运行
复制
heroku pg:backups restore 'https://s3.amazonaws.com/me/items/3H0q/mydb.dump' DATABASE -a app_name

如果您正在从一个应用程序移动到另一个应用程序,并且希望在另一个应用程序中使用相同的数据库,则可以按照以下步骤操作:

  • 登录您的heroku account
  • Select您的旧应用程序,然后转到设置选项卡
  • 显示旧应用程序的配置变量
  • 将配置变量复制回来并选择您的新应用程序
  • 将新应用程序DATABASE_URL替换为旧应用程序值

<代码>F229

票数 18
EN

Stack Overflow用户

发布于 2018-05-24 00:18:17

代码语言:javascript
代码运行次数:0
运行
复制
heroku pg:copy app1_name::HEROKU_POSTGRESQL_ONYX_URL HEROKU_POSTGRESQL_AQUA_URL --app app2_name

第二个db url在app2_name上。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29753366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档