PostgreSQL ERROR: could not access file "$libdir/postgis-2.5"

PostgreSQL ERROR: could not access file "$libdir/postgis-2.5"

我有一个安装了 postgis 的数据库,但它不再工作了:

# SELECT PostGIS_full_version();
ERROR:  could not access file "$libdir/postgis-2.5": No such file or directory
CONTEXT:  SQL statement "SELECT public.postgis_lib_version()"
PL/pgSQL function postgis_full_version() line 26 at SQL statement

我发现其他答案建议 运行 ALTER EXTENSION postgis UPDATE;,所以我做了,但没有效果:

my_db=# ALTER EXTENSION postgis UPDATE;
NOTICE:  version "2.5.4" of extension "postgis" is already installed
ALTER EXTENSION
my_db=# 
my_db=# SELECT PostGIS_full_version();
ERROR:  could not access file "$libdir/postgis-2.5": No such file or directory
CONTEXT:  SQL statement "SELECT public.postgis_lib_version()"
PL/pgSQL function postgis_full_version() line 26 at SQL statement

有人知道如何解决这个问题吗?

(我在 Ubuntu 20.04 上使用 Posrgresql 版本 12.3。我最近从 Ubuntu 19.10 升级到 20.04,我*认为这是开始成为问题的时候)

[编辑]

我在 apt 中搜索,找到了这个我还没有安装的包:postgresql-12-postgis-2.5。所以在安装之后 (sudo apt install postgresql-12-postgis-2.5) 我重新启动了 postgresql (sudo service postgresql restart) 并再次尝试,但我仍然得到同样的错误。

升级到 Ubuntu 20.04 后,我也遇到了同样的情况。

通常postgresql的重大升级不会替换之前的版本,因为数据库数据库要转储和恢复。新版本与旧版本一起安装,并在新服务器上分配了不同的端口。由用户将旧数据库迁移到新版本。

就我而言,由于某种原因,升级删除了以前 postgresql 版本中的 postgis-2.5 库,在旧数据库中留下了损坏的 postgis 安装(当然,在新数据库中没有安装。)

容易混淆和连接到错误的服务器;至少,我很容易感到困惑,因此即使在为新的 postgresql 版本安装了 postgis 之后,也会收到相同的错误消息。我在检查 pg_lsclusters 和了解哪个服务器正在侦听哪个端口时发现了问题。

我想 post 将此作为评论,但我没有足够的声誉。我有一个非常相似的问题,并详细解释了如果超过 here 我是如何解决的。希望对你也有帮助。