Arch Linux升级PostgreSQL11到13提示/opt/pgsql-11/bin不存在如何解决
问题根因
你执行pg_upgrade时指定的旧版本PostgreSQL二进制路径/opt/pgsql-11/bin不存在,是因为系统中没有安装对应11版本的PostgreSQL遗留二进制文件。
解决步骤
- 第一步:先停止当前运行的PostgreSQL服务,避免数据文件被占用
sudo systemctl stop postgresql.service - 第二步:安装11版本的PostgreSQL二进制文件
本次升级跨两个大版本(11→13),Arch官方源的postgresql-old-upgrade包默认仅提供当前稳定版的前一个大版本二进制,因此需要从AUR安装对应11版本的包:yay -S postgresql11-bin
若你未安装AUR助手,也可手动下载postgresql11源码编译安装,编译时指定安装前缀为/opt/pgsql-11即可匹配你原命令里的路径。 - 第三步:确认旧版本二进制文件路径
AUR安装的postgresql11-bin默认将二进制文件存放在/usr/lib/postgresql11/bin/路径下,你可手动查看该路径下是否存在postgres、pg_dump等可执行文件确认路径正确。 - 第四步:修正
pg_upgrade命令重新执行
将原命令中-b参数后的旧版本二进制路径替换为实际路径,修改后命令如下:pg_upgrade -b /usr/lib/postgresql11/bin -B /usr/bin -d /var/lib/postgres/olddata -D /var/lib/postgres/data
补充说明
如果你是跨单个大版本升级(例如12→13),无需从AUR下载包,直接安装官方源的postgresql-old-upgrade包即可,安装完成后旧版本二进制会自动放在/opt/pgsql-12/bin路径下,直接对应命令参数即可。
内容的提问来源于stack exchange,提问作者Santhosh
相关产品推荐
相关产品推荐

