Mac系统PgAdmin无法创建Postgis扩展,报错找不到postgis.control文件
解决方案
错误的核心原因是你当前运行的PostgreSQL 13实例对应的扩展目录下没有匹配版本的Postgis扩展文件,大部分Mac用户出现这个问题都是因为PostgreSQL和Postgis的安装来源不一致导致的,可按以下步骤排查解决:
- 第一步:先确认当前PostgreSQL的安装来源
执行终端命令查看psql路径:which psql- 若返回结果为
/Library/PostgreSQL/13/bin/psql,说明你使用的是PostgreSQL官方dmg包安装的版本 - 若返回结果为
/usr/local/bin/psql(Intel芯片)或/opt/homebrew/bin/psql(Apple芯片),说明你使用的是Homebrew安装的版本
- 若返回结果为
针对官方dmg安装的PostgreSQL 13
- 不要使用Homebrew安装Postgis,Homebrew安装的Postgis默认只会写入自身管理的PostgreSQL扩展目录,不会同步到官方版的路径下
- 直接下载对应PostgreSQL 13版本的Postgis官方Mac安装包,安装过程会自动将扩展文件写入
/Library/PostgreSQL/13/share/postgresql/extension/目录 - 安装完成后,先在PgAdmin中选中你要导入备份的数据库,执行命令验证扩展可正常创建:
CREATE EXTENSION postgis;,无报错后再运行你的SQL备份文件
针对Homebrew安装的PostgreSQL 13
- 先卸载当前已安装的Postgis:
brew uninstall postgis - 安装和pg13匹配的Postgis版本:
brew install postgresql@13 postgis - 执行对应芯片的命令将pg13的二进制路径加入系统环境变量,避免调用到其他版本的PostgreSQL:
- Intel芯片:
echo 'export PATH="/usr/local/opt/postgresql@13/bin:$PATH"' >> ~/.zshrc - Apple Silicon芯片:
echo 'export PATH="/opt/homebrew/opt/postgresql@13/bin:$PATH"' >> ~/.zshrc
- Intel芯片:
- 重载环境变量:
source ~/.zshrc - 重启PostgreSQL服务:
brew services restart postgresql@13 - 回到PgAdmin在目标库执行
CREATE EXTENSION postgis;验证,成功后再导入备份文件
临时规避方案
如果暂时无法搞定Postgis安装,可以先手动编辑你的.sql备份文件,删除文件开头的CREATE EXTENSION postgis;、CREATE EXTENSION postgis_topology;等相关Postgis扩展创建语句,即可先导入非空间数据,后续安装好Postgis后再单独执行扩展创建语句即可。
内容的提问来源于stack exchange,提问作者gurbajani
相关产品推荐
相关产品推荐

