升级 postgres 数据库文件失败,并显示"could not access file $libdir/postgis-2.5: No such file or directory"



我正在研究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看起来是您最好的选择。

最新更新