You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入OpenStreetMap至PostgreSQL时执行CREATE EXTENSION postgis报错求助

解决PostGIS扩展安装时的SQLite符号缺失错误

这个错误的核心原因很明确:你的系统中GDAL库依赖的SQLite版本过低,或者存在多个SQLite版本冲突,导致libgdal.so.1无法找到sqlite3_column_table_name这个符号——这个函数是SQLite 3.16.0及以上版本才引入的特性。

下面是一步步的解决办法:

1. 先确认当前SQLite版本

首先运行命令检查你的SQLite版本:

sqlite3 --version

如果输出的版本号低于3.16.0,那升级SQLite就是首要任务。

2. 升级SQLite并修复依赖

根据你的操作系统类型选择对应的操作:

对于Debian/Ubuntu系统

  • 先更新系统包源:
    sudo apt update
    
  • 升级SQLite及其开发库:
    sudo apt install --only-upgrade sqlite3 libsqlite3-dev
    
  • 重新安装PostGIS以确保它链接到新的依赖库:
    sudo apt install --reinstall postgis postgresql-9.5-postgis-2.2
    

对于RHEL/CentOS系统

默认系统源的SQLite版本通常偏旧,需要借助第三方源:

  • 先安装EPEL源:
    sudo yum install epel-release
    
  • 升级SQLite:
    sudo yum update sqlite sqlite-devel
    
  • 重新安装适配PostgreSQL 9.5的PostGIS包:
    sudo yum reinstall postgis2_95
    

(注:包名可能因系统版本略有差异,若找不到可以用yum search postgis查找对应版本的包)

3. 手动编译场景的额外处理

如果你是手动编译的GDAL或PostGIS,需要确保编译时链接的是新版本的SQLite:

  • 重新编译GDAL,指定新版本SQLite的路径:
    ./configure --with-sqlite=/path/to/your/new/sqlite
    make && sudo make install
    
  • 之后重新编译安装PostGIS,确保它能调用到更新后的GDAL和SQLite库。

4. 验证库依赖并重启服务

  • 检查GDAL链接的SQLite库是否正确:
    ldd /usr/lib/libgdal.so.1 | grep sqlite
    
    确认输出的路径指向的是你刚升级的新版本SQLite库。
  • 最后重启PostgreSQL服务,让新的依赖生效:
    sudo service postgresql restart
    
    之后再尝试执行CREATE EXTENSION postgis;应该就能成功了。

内容的提问来源于stack exchange,提问作者Maher Ben Taleb Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:18:47