PostGIS插件升级
更新时间:2026-10-19
步骤一:查询已安装的PostGIS插件
- 使用PostgreSQL命令行工具连接数据库。
-
执行如下SQL查询当前已安装的PostGIS插件。
Plain Text1SELECT 2 *, 3 installed_version < default_version AS need_update 4FROM 5 pg_available_extensions 6WHERE 7 name LIKE 'postgis%';结果示例:
Plain Text1 name | default_version | installed_version | comment | need_update 2------------------------+-----------------+-------------------+------------------------------------+------------- 3 postgis | 3.3.2 | 3.1.4 | Ganos PostGIS+ | t 4 postgis_tiger_geocoder | 3.3.2 | 3.1.4 | Ganos PostGIS+ tiger geocoder | t 5 postgis_raster | 3.3.2 | 3.1.4 | PostGIS raster types and functions | t 6 ...查询结果 说明 name 插件名称。 default\_version 当前数据库可安装的版本。 installed\_version 目前安装的版本。 comment 插件描述。 need\_update 是否需要升级。 说明
查询结果中,need_update为t时,表示需要升级。
步骤二:升级PostGIS插件
PostGIS插件根据RDS PostgreSQL实例大版本不同,升级方法不同。
重要
以下操作只针对单个数据库有效,如果实例中存在多个数据库,需要对每个数据库均执行以下操作。
-
如果RDS PostgreSQL实例大版本为PostgreSQL 10、13、14或15,升级方法如下:
执行如下SQL升级PostGIS插件版本。
Plain Text1ALTER EXTENSION <插件名> UPDATE;说明
- 每一个插件都需要单独执行上述语句进行升级操作。
- 您也可以通过执行PostGIS_Extensions_Upgrade函数对插件进行升级。更多信息,请参见PostGIS_Extensions_Upgrade。
Plain Text1SELECT PostGIS_Extensions_Upgrade(); -
如果RDS PostgreSQL实例大版本为PostgreSQL 11、12,升级方法如下:
执行如下SQL升级PostGIS插件版本。
Plain Text1do 2$$ 3DECLARE 4 with_pgis boolean; 5 with_ganos boolean; 6BEGIN 7 SELECT ((SELECT 1 FROM pg_extension WHERE extname='postgis') IS NOT null) 8 INTO with_pgis; 9 10 SELECT ((SELECT 1 FROM pg_extension WHERE extname='ganos_geometry') IS NOT null) 11 INTO with_ganos; 12 13 IF with_pgis AND with_ganos THEN 14 PERFORM ganos_update(); 15 ELSIF with_ganos THEN 16 PERFORM ganos_update(); 17 ELSIF with_pgis THEN 18 PERFORM PostGIS_Extensions_Upgrade(); 19 END IF; 20 21 return 'PostGIS has update to ' || postgis_lib_version(); 22END 23$$ LANGUAGE 'plpgsql' ;重要
在部分RDS PostgreSQL 11和12实例中,PostGIS插件采用Ganos的方式实现。若使用该SQL时出现类似错误提示
ERROR: RETURN cannot have a parameter in function returning void,则需要执行命令SELECT postgis_lib_version();以确认PostGIS是否已成功升级。
评价此篇文章
