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

Ano*_*ith 7 migration postgresql postgis

我想这是一个已知的问题,但由于我使用的脚本删除了我的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
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM pg_available_extensions;返回

[...]
postgis 2.1.4   2.1.4   PostGIS geometry, geography, and raster spatial types and functions.
Run Code Online (Sandbox Code Playgroud)

但是在访问像使用几何类型的表这样的对象时仍然是这条消息.

任何的想法?

Ano*_*ith 6

最后"解决" postgis 2.2.2 编译的问题(也需要gdal,proj4和geos)然后发布

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
Run Code Online (Sandbox Code Playgroud)

因为DROP EXTENSION postgis;告诉我postgis不再存在.

最后:

ALTER EXTENSION postgis UPDATE TO '2.2.2';
ALTER EXTENSION postgis_topology UPDATE TO '2.2.2';
Run Code Online (Sandbox Code Playgroud)

从PostgreSQL 9.4再次访问我的geom数据和函数.似乎从源代码编译正确更新了postgresql的变量路径并安装了不再存在的/usr/lib/postgresql/9.4/lib/postgis-2.2.so(对于postgis-2.1.so也是如此),即使是(重新)从apt-get安装.

希望这会有所帮助.

  • ALTER EXTENSION postgis更新为“ 2.2.2”;BU ALTER EXTENSION postgis UPDATE对我不起作用;做了 (2认同)

小智 5

首先在需要它的数据库中运行(作为 postgres 管理员)(\c your-database-name):

ALTER EXTENSION postgis UPDATE;
Run Code Online (Sandbox Code Playgroud)

如果成功返回,请检查您的版本

SELECT PostGIS_Full_Version();
Run Code Online (Sandbox Code Playgroud)

但是,如果服务器返回找不到扩展名 postgis,则运行

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
ALTER EXTENSION postgis UPDATE;
Run Code Online (Sandbox Code Playgroud)

并通过运行再次检查

SELECT PostGIS_Full_Version();
Run Code Online (Sandbox Code Playgroud)