pg_upgrade from Postgresql-15 to Postgresql-16 fails with postgis installed

svujldwt  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(1)|浏览(145)

我正在使用默认文档在Arch上从Postgres 15升级到16。当我到达pg_upgrade部分时:

pg_upgrade -b /opt/pgsql-15/bin -B /usr/bin -d /var/lib/postgres/olddata -D /var/lib/postgres/data

字符串
然后我得到一个“失败”退出。当我检查pg_upgrade_output.d日志文件时,我发现一个与PostGIS路径相关的错误:

command: "/usr/bin/pg_dump" --host /var/lib/postgres --port 50432 --username postgres --schema-only --quote-all-identifiers --binary-upgrade --format=custom  --file="/var/lib/postgres/data/pg_upgrade_output.d/20231207T105131.842/dump/pg_upgrade_dump_16385.custom" 'dbname=linuxbox_db' >> "/var/lib/postgres/data/pg_upgrade_output.d/20231207T105131.842/log/pg_upgrade_dump_16385.log" 2>&1
pg_dump: error: query failed: ERROR:  could not access file "$libdir/postgis-3": No such file or directory


是我系统上的问题还是pg_upgrade代码中的错误?

anauzrmj

anauzrmj1#

这个错误是因为我需要在安装v16之后和运行pg_upgrade之前重建postgis库。
如果其他人最终在Arch上升级遇到问题,这里是我遵循的步骤的总结:

sudo systemctl stop postgresql.service

  • 将db data目录移动到olddata。https://wiki.archlinux.org/title/PostgreSQL#Upgrading_PostgreSQL

sudo mv /var/lib/postgres/data /var/lib/postgres/olddata

  • 创建新的数据目录并将其分配给postgres用户

sudo mkdir /var/lib/postgres/data /var/lib/postgres/tmp
sudo chown postgres:postgres /var/lib/postgres/data /var/lib/postgres/tmp

  • 安装新版本Postgres,包括postgresql-old-upgrade
  • 进入postgres用户和tmp目录

sudo -i -u postgres
[postgres]$ cd /var/lib/postgres/tmp

  • 将新数据库初始化为

[postgres]$ initdb -D /var/lib/postgres/data --locale=C.UTF-8 --encoding= UTF 8

  • 从我的用户启动systmctl服务

sudo systemctl start postgresql.service

  • 从postgres帐户更新h3

pgxn install h3

  • 从pacman重建库:gdal,postgis,postgis-old-upgrade,pgsql-ogr-fdw
  • 停止来自我用户的systmctl服务

sudo systemctl stop postgresql.service

  • 运行pg_upgrade使用postgres帐户将值更改为旧版本

[postgres]$ pg_upgrade -B /opt/pgsql-PG_VERSION/bin -B /usr/bin -d /var/lib/postgres/olddata -D /var/lib/postgres/data

  • 检查数据库是罚款和删除tmp和olddata目录

相关问题