Heroku pg:备份:使用postgis扩展名恢复失败[重复]

0sgqnhkj  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(128)

此问题在此处已有答案

pg_restore: error: could not execute query: ERROR: extension "pg_stat_statements" must be installed in schema "heroku_ext"(3个答案)
上个月关门了。
我按照Heroku提供的这组说明导出本地postgis数据库的副本并将其恢复到Heroku postgres示例中。我还按照这组说明为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扩展时,恢复似乎失败了。我注意到,当我在attempted resotre之后登录Heroku postgres示例时,postgis扩展不见了。这使我相信pg:restore删除了扩展,然后尝试重新安装它,但失败了。
你知道我如何在恢复的时候在我的Heroku postgres示例上安装postgis扩展吗?

nimxete2

nimxete21#

好的,我已经找到了解决上述问题的方法。我没有使用上面的恢复命令,而是在命令中添加了--extensions 'postgis'。即:

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

根据来自Heroku的support post,他们更改了postgis扩展在数据库中的存储方式,并且--extensions标志似乎在恢复之前正确地添加了扩展。

相关问题