Postgresql:无法访问文件«$libdir/postgis-2.1»,没有这个文件或目录。

12

我想这是一个已知的问题,但由于我使用了一个脚本删除了我的postgresql-9.4-postgis-2.1,现在无法在Debian上摆脱这个SQL错误。

无法访问文件"$libdir/postgis-2.1":没有那个文件或目录

我已经做了以下操作:

- Remove new unwanted postgresql-9.5-postgis-2.2 package installed
- Reinstalling postgresql-9.4-postgis-2.1, postgresql-9.4-postgis-scripts and postgis
- Using SQL: ALTER EXTENSION postgis UPDATE TO '2.1.4' --under postgres user
- Using SQL: ALTER EXTENSION postgis_topology UPDATE TO '2.1.4' --under postgres user

执行 SELECT * FROM pg_available_extensions; 命令返回以下结果:

[...]
postgis 2.1.4   2.1.4   PostGIS geometry, geography, and raster spatial types and functions.

但是当访问使用几何类型的表等对象时,仍会出现此错误信息。

有任何想法吗?

3个回答

7
最后,"解决"了编译来自源代码的PostGIS 2.2.2(还需要GDAL、PROJ4和GEOS),然后发出以下命令。
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;

因为执行 DROP EXTENSION postgis; 命令告诉我 PostGIS 不再存在。

最后:

ALTER EXTENSION postgis UPDATE TO '2.2.2';
ALTER EXTENSION postgis_topology UPDATE TO '2.2.2';

我再次获得了从PostgreSQL 9.4获取几何数据和函数的访问权限。看起来从源代码编译正确地更新了postgresql的变量路径,并安装了之前不存在的/usr/lib/postgresql/9.4/lib/postgis-2.2.so(对于postgis-2.1.so也是如此),即使使用apt-get重新安装,也无法解决这个问题。
希望这可以帮到你。

3
ALTER EXTENSION postgis UPDATE TO '2.2.2'; 对我来说没有起作用,但是 ALTER EXTENSION postgis UPDATE; 起了作用。 - Manel Clos

5

首先(以postgres管理员身份)在需要它的数据库中运行以下命令(\c your-database-name):

ALTER EXTENSION postgis UPDATE;

如果返回成功,则检查您的版本。
SELECT PostGIS_Full_Version();

如果服务器返回无法找到postgis扩展程序,则运行以下命令:

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
ALTER EXTENSION postgis UPDATE;

然后再次运行以进行检查

SELECT PostGIS_Full_Version();

1
如果您使用的是Ubuntu操作系统 请使用以下命令进入PostgreSQL交互式Shell
sudo -u postgres psql


\c database_name;


ALTER EXTENSION postgis UPDATE TO "2.4.4";


SELECT PostGIS_Full_Version();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接