此问题在此处已有答案:
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扩展吗?
1条答案
按热度按时间nimxete21#
好的,我已经找到了解决上述问题的方法。我没有使用上面的恢复命令,而是在命令中添加了
--extensions 'postgis'
。即:根据来自Heroku的support post,他们更改了postgis扩展在数据库中的存储方式,并且
--extensions
标志似乎在恢复之前正确地添加了扩展。