PostgreSQL错误:无法访问文件“ $ libdir / postgis-2.5”

时间:2020-06-11 11:02:30

标签: linux postgresql gis postgis

我有一个安装了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

有人对如何解决这个问题有任何想法吗?

(我在使用Posrgresql版本12.3的Ubuntu 20.04上,我最近从Ubuntu 19.10升级到20.04,我*以为这是个问题了)

[编辑]

我搜索了apt,找到了尚未安装的这个软件包:postgresql-12-postgis-2.5。因此,安装完(sudo apt install postgresql-12-postgis-2.5之后,我重新启动了postgresql(sudo service postgresql restart)并再次尝试,但是仍然出现相同的错误。

2 个答案:

答案 0 :(得分:3)

我想发表此评论,但我对此没有足够的声誉。我遇到了一个非常相似的问题,并详细说明了如果超过here时该如何解决。希望对您有帮助。

答案 1 :(得分:1)

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

通常,PostgreSQL的主要升级不替换以前的版本,因为必须转储并还原dabatase。新版本与旧版本一起安装,并且在新服务器上分配了另一个端口。由用户决定将旧数据库迁移到新版本。

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

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