我正在研究OSX,并通过Homebrew安装了postgres。我刚刚将 Postgres 从 v11 升级到 v13。现在我尝试使用以下命令更新数据库文件:
brew postgresql-upgrade-database
此操作失败,查看日志,错误为:
pg_dump: error: query failed: ERROR: could not access file "$libdir/postgis-2.5": No such file or directory
如果我这样做brew info postgis
那么我会看到:
% brew info postgis
postgis: stable 3.0.2 (bottled), HEAD
Adds support for geographic objects to PostgreSQL
https://postgis.net/
/usr/local/Cellar/postgis/3.0.2_1 (435 files, 29.7MB) *
Poured from bottle on 2020-11-12 at 23:15:12
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/postgis.rb
License: GPL-2.0-or-later
==> Dependencies
Build: gpp ✘, pkg-config ✔
Required: gdal ✔, geos ✔, json-c ✔, pcre ✔, postgresql ✔, proj ✔, protobuf-c ✔, sfcgal ✔
==> Options
--HEAD
Install HEAD version
==> Analytics
install: 11,064 (30 days), 26,959 (90 days), 80,033 (365 days)
install-on-request: 10,946 (30 days), 26,628 (90 days), 78,351 (365 days)
build-error: 0 (30 days)
所以我想 Postgis 3.0.2 是作为升级过程的一部分安装的,pg_dump
(数据库文件升级需要)找不到 Postgis 2.5。
我该怎么办?我想我可以暂时重新安装 Postgis 2.5 以$libdir
- 但是如何?
pg_config --pkglibdir
揭示了$libdir
/usr/local/lib/postgresql
。如果我列出该目录中的文件,我可以看到它包含postgis-3.so
,但不包含postgis-2.5.so
。
注意:我目前也无法访问带有psql
的帖子 - 我看到了可怕的psql: error: could not connect to server: could not connect to server: No such file or directory
.但是,brew services list
告诉我postgresql
正在运行。
卸载错误版本的 Postgis(如果尚未卸载):
brew remove postgis
首先转到 Postgis 公式的最后一个 2.5 版本:
https://raw.githubusercontent.com/Homebrew/homebrew-core/bca96164362bfa3c42b4d403be4eb3847797424f/Formula/postgis.rb
复制该代码。
将其粘贴到计算机上的自制Postgis公式上:
pbpaste > $(find $(brew --repository) -name postgis.rb)
然后使用以下公式再次安装 Postgis:
brew install postgis
固定邮政以防止意外升级:
brew pin postgis
这应该会为您找到正确版本的Postgis。
升级 PostGIS 并不是那么简单(请参阅文档),并且使用此发行版的自动升级可能会搞砸您的安装。
对 PostgreSQL 数据目录进行完整备份,然后卸载 PostgreSQL v13,再次安装 v11 和 PostGIS 2.5,看看是否可以让数据库再次工作。
然后按照 PostGIS 手册中的升级过程进行操作。
在PostGIS站点链接的用户wiki上有一个兼容性/支持矩阵,这似乎表明从Postgres v13开始,PostGIS的最低版本是v3.0
如果您出于某种原因被困在PostGIS v2.5上,Postgres V12看起来是您最好的选择。