postgresql错误:未定义的符号:django中的GEOSClipByRect

时间:2017-04-24 09:10:33

标签: django postgresql postgis django-postgresql

当我在django中迁移时,django返回错误

$ python manager.py migrate
  

django.db.utils.InternalError:无法加载库" /usr/lib/postgresql/9.6/lib/postgis-2.3.so":/usr/lib/liblwgeom-2.3.so。 0:未定义的符号:GEOSClipByRect

我研究过很多帖子但没找到任何解决方案 有谁知道解决方案?
我的系统信息如下:

$ lsb_release -a
  

经销商ID:Ubuntu
  描述:Ubuntu 16.04.2 LTS
  发布:16.04
  代号:xenial



$ dpkg -l | grep postgres
  

ii postgresql-9.6 9.6.2-1.pgdg16.04 + 1 amd64对象关系SQL数据库,版本9.6服务器
  ii postgresql-9.6-pgrouting 2.3.2 + ds-2.pgdg16.04 + 1 amd64 PostgreSQL / PostGIS的路由功能支持
  ii postgresql-9.6-pgrouting-scripts 2.3.2 + ds-2.pgdg16.04 + 1所有路由功能支持PostgreSQL / PostGIS - 脚本
  ii postgresql-9.6-postgis-2.3 2.3.2 + dfsg-1~exp2.pgdg16.04 + 1 amd64地理对象支持PostgreSQL 9.6
  ii postgresql-9.6-postgis-2.3-scripts 2.3.2 + dfsg-1~exp2.pgdg16.04 + 1所有地理对象都支持PostgreSQL 9.6 - 脚本
  ii postgresql-client-9.6 9.6.2-1.pgdg16.04 + 1 amd64 PostgreSQL前端程序9.6
  ii postgresql-client-common 180.pgdg16.04 + 1多个PostgreSQL客户端版本的所有管理器
  ii postgresql-common 180.pgdg16.04 + 1所有PostgreSQL数据库集群管理器
  ii postgresql-contrib 9.6 + 180.pgdg16.04 + 1 PostgreSQL的所有附加功能(支持的版本)
  ii postgresql-contrib-9.6 9.6.2-1.pgdg16.04 + 1 amd64 PostgreSQL的附加设施



$ dpkg -l | grep postgres
  

ii postgis 2.3.2 + dfsg-1~exp2.pgdg16.04 + 1 amd64 PostgreSQL的地理对象支持
  ii postgis-doc 2.3.2 + dfsg-1~exp2.pgdg16.04 + 1所有地理对象都支持PostgreSQL - 文档
  ii postgresql-9.6-postgis-2.3 2.3.2 + dfsg-1~exp2.pgdg16.04 + 1 amd64地理对象支持PostgreSQL 9.6
  ii postgresql-9.6-postgis-2.3-scripts 2.3.2 + dfsg-1~exp2.pgdg16.04 + 1所有地理对象支持PostgreSQL 9.6 - 脚本

1 个答案:

答案 0 :(得分:1)

你很可能正在使用旧版本的GEOS(我猜3.4。你可以通过运行geos-config --version找到版本)。您需要做的是卸载当前版本的GEOS并重新安装更新版本:

从/ usr / bin / usr / local / bin usr / lib usr / local / lib中删除geos文件。应该相当容易识别

运行以下命令安装版本3.5:

$ wget http://download.osgeo.org/geos/geos-3.5.1.tar.bz2

$ tar xjf geos-3.5.1.tar.bz2

$ cd geos-3.5.2

$ ./configure

$ make

$ sudo make install

$ sudo ldconfig

编辑:为您的项目使用最相关的GEOS版本。使用3.5

并非强制要求