Search code examples
postgresqlpostgis

Upgrading postgres database files fail with "could not access file $libdir/postgis-2.5: No such file or directory"


I'm working on OSX and have postgres installed via Homebrew. I've just upgraded Postgres from v11 to v13. Now I've tried updating the database files with:

brew postgresql-upgrade-database

This fails and looking at the logs, the error is:

pg_dump: error: query failed: ERROR:  could not access file "$libdir/postgis-2.5": No such file or directory

If I do brew info postgis then I see:

% 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)

So I guess Postgis 3.0.2 was installed as part of the upgrade process and pg_dump (which is needed for the database file upgrade) can't find Postgis 2.5.

What should I do? I guess I could reinstall Postgis 2.5 to $libdir temporarily - but how?

pg_config --pkglibdir reveals that $libdir is /usr/local/lib/postgresql. If I list the files in that directory, I can see it contains postgis-3.so, but not postgis-2.5.so.

NB: I also can't currently access postgres with psql - I see the dreaded psql: error: could not connect to server: could not connect to server: No such file or directory. However, brew services list tells me that postgresql is running.


Solution

  • Upgrading PostGIS is not so straightforward (see the documentation), and by using the automatic upgrade of this distribution you probably messed up your installation.

    Take a full backup of your PostgreSQL data directory, then uninstall PostgreSQL v13, install v11 and PostGIS 2.5 again and see that you can get the database to work again.

    Then follow the upgrade procedure from the PostGIS manual.