Heroku pg:backups:restore 失败,提示 postgis 扩展错误。

3
我正在按照Heroku提供的一组指令(链接1)来导出本地postgis数据库的副本并将其恢复到我的Heroku postgres实例中。 我还按照(链接2)这组指令在Heroku上为我的数据库提供了postgis扩展。
扩展已成功安装。
climbville::DATABASE=> CREATE EXTENSION postgis;
CREATE EXTENSION
climbville::DATABASE=> \dx
                                List of installed extensions
  Name   | Version |   Schema   |                        Description                         
---------+---------+------------+------------------------------------------------------------
 plpgsql | 1.0     | pg_catalog | PL/pgSQL procedural language
 postgis | 3.2.3   | heroku_ext | PostGIS geometry and geography spatial types and functions

我接着使用以下命令运行了还原:
heroku pg:backups:restore '<presigned url>' DATABASE_URL --app climbville

然而,恢复失败并显示以下错误信息:
pg_restore: creating EXTENSION "postgis"
pg_restore: while PROCESSING TOC:
pg_restore: from TOC entry 2; 3079 18546 EXTENSION postgis (no owner)
pg_restore: error: could not execute query: ERROR:  Extensions can only be created on heroku_ext schema

恢复似乎在检查并尝试安装postgis扩展时失败了。我注意到,在尝试还原后,当我登录Heroku postgres实例时,postgis扩展已经消失了。这让我相信pg:restore删除了该扩展,然后尝试重新安装但失败了。
有什么办法可以在还原时在Heroku postgres实例上安装postgis扩展吗?
1个回答

2

好的,我已经发现了如何解决上述问题。不要使用上面的恢复命令,而是将--extensions 'postgis'添加到命令中。具体如下:

heroku pg:backups:restore '<presigned url>' DATABASE_URL --extensions 'postgis' --app climbville

根据Heroku的支持帖子,他们更改了在数据库中存储postgis扩展的方式,并且似乎--extensions标志正确地在恢复之前添加了该扩展。请注意保留HTML标签。

这会修改生产数据库。 - Flimm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接