如何解决macOS M2上PostgreSQL 13无法找到postgis.control文件的问题?
解决PostgreSQL@13无法找到PostGIS扩展文件的问题
问题背景
在macOS 13.5.2(Apple M2)环境下,通过brew安装postgresql@13和postgis后,执行create extension postgis;或用pgAdmin4恢复数据库时,出现以下错误:
ERROR: could not open extension control file "/opt/homebrew/opt/postgresql@13/share/postgresql@13/extension/postgis.control": No such file or directory
环境信息
which psql输出:/opt/homebrew/opt/postgresql@13/bin/psqlwhich pg_config输出:/opt/homebrew/opt/postgresql@13/bin/pg_config- postgis版本:3.3.4_1
- postgresql@13版本:13.12
问题原因
brew默认安装的PostGIS 3.3.4适配最新版PostgreSQL(如14+),与postgresql@13版本不兼容,导致PostgreSQL无法在自身扩展目录中找到PostGIS的控制文件。
解决方案
方案一:创建软链接(快速临时解决)
- 查看PostGIS扩展文件位置:
ls $(brew --prefix postgis)/share/postgresql/extension/ - 将PostGIS扩展文件软链接到postgresql@13的扩展目录:
ln -s $(brew --prefix postgis)/share/postgresql/extension/postgis* /opt/homebrew/opt/postgresql@13/share/postgresql@13/extension/ - 重启PostgreSQL服务:
brew services restart postgresql@13 - 验证扩展安装:
psql -U postgres -c "create extension postgis;"
方案二:安装适配版本的PostGIS(规范解决)
- 卸载当前PostGIS:
brew uninstall postgis - 安装与postgresql@13兼容的PostGIS版本(PostGIS 3.2系列适配PostgreSQL 13):
若brew无该版本公式,尝试从源码编译并指定依赖:brew install postgis@3.2brew install postgis --build-from-source --with-postgresql@13 - 重启PostgreSQL服务:
brew services restart postgresql@13 - 验证扩展安装:
psql -U postgres -c "create extension postgis;"
内容的提问来源于stack exchange,提问作者0x55b1E06FF
相关产品推荐
相关产品推荐

