首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >升级postgres数据库文件失败,并显示“无法访问文件$libdir/postgis-2.5:没有这样的文件或目录”

升级postgres数据库文件失败,并显示“无法访问文件$libdir/postgis-2.5:没有这样的文件或目录”
EN

Stack Overflow用户
提问于 2020-11-13 07:29:29
回答 3查看 634关注 0票数 0

我正在OSX上工作,并通过Homebrew安装了postgres。我刚刚将Postgres从v11升级到v13。现在,我尝试使用以下命令更新数据库文件:

代码语言:javascript
复制
brew postgresql-upgrade-database

此操作失败,查看日志时,错误为:

代码语言:javascript
复制
pg_dump: error: query failed: ERROR:  could not access file "$libdir/postgis-2.5": No such file or directory

如果我执行brew info postgis,那么我会看到:

代码语言:javascript
复制
% 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)

所以我猜Postgis3.0.2是作为升级过程的一部分安装的,而pg_dump (数据库文件升级所需要的)找不到Postgis2.5。

我该怎么办?我想我可以暂时把postgis2.5重新安装到$libdir --但是怎么做呢?

pg_config --pkglibdir揭示了$libdir就是/usr/local/lib/postgresql。如果我列出该目录中的文件,我可以看到它包含postgis-3.so,但不包含postgis-2.5.so

注意:我现在也不能用psql访问postgres --我看到了可怕的psql: error: could not connect to server: could not connect to server: No such file or directory。但是,brew services list告诉我postgresql正在运行。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-11-13 11:28:35

升级PostGIS并非易事(请参阅文档),使用此发行版的自动升级可能会搞砸您的安装。

对您的PostgreSQL数据目录进行完整备份,然后卸载PostgreSQL v13,再次安装v11和PostGIS 2.5,然后查看是否可以让数据库再次工作。

然后按照PostGIS手册中的升级过程进行操作。

票数 0
EN

Stack Overflow用户

发布于 2020-12-16 19:02:53

如果您尚未卸载错误的Postgis版本,请执行以下操作:

代码语言:javascript
复制
brew remove postgis

首先转到Postgis公式的最后2.5版本:

https://raw.githubusercontent.com/Homebrew/homebrew-core/bca96164362bfa3c42b4d403be4eb3847797424f/Formula/postgis.rb

复制代码。

将此代码粘贴到机器上的自制Postgis公式上:

代码语言:javascript
复制
pbpaste > $(find $(brew --repository) -name postgis.rb)

然后使用以下公式再次安装Postgis:

代码语言:javascript
复制
brew install postgis

Pin Postgis以防止意外升级:

代码语言:javascript
复制
brew pin postgis

这应该会为您获得正确的Postgis版本。

票数 1
EN

Stack Overflow用户

发布于 2020-11-27 15:28:42

在PostGIS站点上链接的用户维基上有一个兼容性/支持列表,它似乎表明从Postgres v13开始,PostGIS的最低版本是3.0

如果你因为任何原因被困在PostgresV2.5上,Postgres V12看起来是你最好的选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64813344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档