我有一个安装了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
)并再次尝试,但是仍然出现相同的错误。
答案 0 :(得分:3)
我想发表此评论,但我对此没有足够的声誉。我遇到了一个非常相似的问题,并详细说明了如果超过here时该如何解决。希望对您有帮助。
答案 1 :(得分:1)
升级到Ubuntu 20.04后,我也遇到了同样的情况。
通常,PostgreSQL的主要升级不替换以前的版本,因为必须转储并还原dabatase。新版本与旧版本一起安装,并且在新服务器上分配了另一个端口。由用户决定将旧数据库迁移到新版本。
就我而言,由于某种原因,升级删除了先前的postgresql版本中的postgis-2.5库,在旧数据库中留下了损坏的postgis安装(当然,在新数据库中也没有安装。)>
很容易混淆并连接到错误的服务器;至少,我很困惑,所以即使在为新的postgresql版本安装了postgis之后也收到了相同的错误消息。我发现检查pg_lsclusters并了解哪个服务器在哪个端口上监听的问题。