假设两个应用one
和two
:
$ heroku apps
=== {somebody's} Apps
one
two
现在假设有一个绑定到one
的Postgres插件:
$ heroku addons -a one
Add-on Plan Price State
────────────────────────────────────── ───────── ───── ───────
heroku-postgresql (postgresql-foo-123) hobby-dev free created
└─ as DATABASE
The table above shows add-ons and the attachments to the current app (one) or other apps.
是否可以使用CLI将此插件迁移到two
?
我知道您可以将其附加到two
:
$ heroku addons:attach -a two one::DATABASE
Attaching postgresql-foo-123 to ⬢ two... done
Setting DATABASE config vars and restarting ⬢ two... done, vXXX
但是之后,您无法将其与{em>“计费应用” 分开的one
:
$ heroku addons:detach -a one one::DATABASE
Detaching DATABASE to postgresql-foo-123 from ⬢ one... !
▸ Cannot destroy last attachment to billing app for resource postgresql-foo-123
当您查看附加到two
的服务时,可以看到此状态(在“价格”下):
$ heroku addons -a two
Add-on Plan Price State
────────────────────────────────────── ───────── ─────────────────── ───────
heroku-postgresql (postgresql-foo-123) hobby-dev (billed to one app) created
├─ as DATABASE
└─ as DATABASE on one app
The table above shows add-ons and the attachments to the current app (two) or other apps.
如果我现在删除one
,则该插件也会随之删除:
$ heroku apps:delete -a one -c one
Destroying ⬢ one (including all add-ons)... done
$ heroku addons -a two
No add-ons for app two.
那么,有什么办法可以更改该插件的计费应用?理想情况下,我想最后将插件仅 附加到two
,以便可以删除one
而不会丢失任何数据。
答案 0 :(得分:1)
根据我从Heroku支持小组得到的答复,简短的答案是“ no” (强调我的意思):
您可以使用
heroku addons:attach
使附加组件可用于 其他应用程序,但附件的帐单将保留在 相同的应用。
我们提出了两种解决方案:
如果您关心的只是最后一个名为 two
的应用程序,该应用程序绑定到与one
绑定的数据库,则可以切换名称:
heroku apps:delete -a two -c two
heroku apps:rename -a one two
希望没有人在删除和重命名之间的短暂间隔内使用two
...
或者,如果您希望将数据从one
转移到two
,则可以创建一个新的插件并在其中复制数据(这仅适用于支持此功能的插件,例如heroku-postgresql
):
heroku addons:create heroku-postgresql:hobby-dev -a two
heroku pg:copy DATABASE two::DATABASE -a one --confirm one
heroku apps:delete -a one -c one # also deletes the old database