- 最新
- 投票最多
- 评论最多
【以下的回答经过翻译处理】 你好yanshul,
这个问题可能是由于数据库中存在旧版本的postgis_raster(在新版本上不受支持),这些旧版本被安装为函数而不是扩展,因此当你运行“show rds.extensions”时将不会显示出来。
我能够重现这个问题,以下是解决它的步骤。
- 首先检查数据库中是否仍有与版本2 RASTER相关的任何函数或库:
postgres=> select probin from pg_proc where proname = 'postgis_raster_lib_version';
probin
---------+-------
$libdir/rtpostgis-2.5
- 检查版本2中创建的对象的数量:
postgres=> SELECT probin, count(*) FROM pg_proc WHERE probin LIKE '%postgis%' GROUP BY probin;
probin | count
-----------------+-------
$libdir/rtpostgis-2.5 | 104
- 现在在你遇到问题的数据库中添加PostGIS扩展程序(如果未安装):
CREATE EXTENSION postgis; (这将创建3.1.5版本的扩展程序)
- 要检查完整的PostGIS扩展版本,包括“RASTER lib”版本和状态:
postgres=> SELECT postgis_full_version();
postgis_full_version
-----------------+-------
POSTGIS="3.1.5 c60e4e3" [EXTENSION] PGSQL="100" GEOS="3.7.3-CAPI-1.11.3 b50468f" PROJ="Rel. 4.9.3, 15 August 2016" GDAL="GDAL 2.1.4, released 2017/06/23" LIBXML="2.9.1" LIBJSON="0.12.1" LIBPROTOBUF="1.3.0" WAGYU="0.5.0 (Internal)" RASTER (raster lib from "2.5.5 r0" need upgrade) [UNPACKAGED!] (raster procs from "2.5.5 r0" need upgrade)
- 我们需要删除与版本2相关的库。要做到这一点,请使用主用户登录并删除 'postgis_raster_lib_version'。
postgres=> drop function postgis_raster_lib_version; DROP FUNCTION
postgres=> select * from pg_proc where proname = 'postgis_raster_lib_version'; proname | pronamespace | proowner | prolang | procost | prorows | provariadic | protransform | proisagg | proiswindow | prosecdef | proleakproof | proisstrict | proretset | provolatile | proparallel | pronargs | pronargdefaults | prorettype | proargtypes | proallargtypes | proargmodes | proargnames | proargdefaults | protrftypes | prosrc | probin | proconfig | proacl ---------+--------------+----------+---------+---------+---------+-------------+--------------+----------+- (0 rows)
- D删除 PostGIS 扩展(这将删除 PostGIS 版本 3,但版本 2.X 将保持已安装状态):
DROP EXTENSION postgis CASCADE;
Drop all raster related type from database:
DROP TYPE raster CASCADE;
- 查看版本 2 的栅格对象数量。
postgres=> SELECT probin,count(*) FROM pg_catalog.pg_proc WHERE probin LIKE '%postgis%' GROUP BY 1; probin | count -----------------------+------- $libdir/rtpostgis-2.5 | 8
- 我们必须手工删除相关函数:
postgres=> SELECT proname FROM pg_catalog.pg_proc WHERE probin LIKE '%postgis%'; proname -----------------------+------- postgis_raster_lib_build_date postgis_gdal_version _st_summarystats_finalfn _st_histogram _st_quantile _st_valuecount st_gdaldrivers st_minpossiblevalue
postgres=> drop function postgis_raster_lib_build_date; DROP FUNCTION
postgres=> SELECT probin,count(*) FROM pg_catalog.pg_proc WHERE probin LIKE '%postgis%' GROUP BY 1; probin | count --------+------- (0 rows)
现在您可以返回到 AWS 管理控制台并升级 RDS PostgreSQL 实例。
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前