我们有一个现有的Heroku应用程序,偶尔会将其
现有应用程序中的扩展名位于
pg:backups restore
到其他应用程序。自8月1日以来恢复失败(具体信息请参见:https://devcenter.heroku.com/changelog-items/2446)。现有应用程序中的扩展名位于
public
中,新创建的应用程序中的扩展名位于heroku_ext
中。因此我想要将这些扩展移动到heroku_ext
中。some-app::DATABASE=> alter extension hstore set schema heroku_ext;
ERROR: permission denied for schema heroku_ext
架构:
some-app::DATABASE=> \dn
List of schemas
Name | Owner
------------+----------------
heroku_ext | postgres
public | some-user
扩展插件(只展示一个,为了简洁)
some-app::DATABASE=> \dx
List of installed extensions
Name | Version | Schema | Description
--------------------+---------+------------+------------------------------------------------------------------------
hstore | 1.7 | public | data type for storing sets of (key, value) pairs
由于有依赖于它的hstore列,我不能删除/重新创建该扩展。 如何更改扩展的模式?
更新:
联系了Heroku,他们说正在处理此问题并提供以下信息作为解决方法:
手动迁移Postgres插件:
将受影响的数据库拉入本地数据库手动迁移相关扩展在本地创建一个新数据库将已迁移扩展的本地DB推送到新数据库中 提升新数据库手动更新模式引用。 例如:
将所有WITH SCHEMA public;实例更改为WITH SCHEMA heroku_ext; 将所有DEFAULT public实例更改为DEFAULT heroku_ext 使用文本编辑器中的查找和替换或使用sed更改pg_dump的输出