安装 postgres-client-13 后,pg_dump 提示未安装 PostgreSQL 版本 11

安装 postgres-client-13 后,pg_dump 提示未安装 PostgreSQL 版本 11

我们刚刚将 PostgreSQL 服务器升级到 v13。我们在 Ubuntu 18 系统上大量使用 pg_dump 在数据库之间传输数据。升级服务器后,pg_dump 会抱怨版本不匹配。

很简单,我从 Apt Postgres repo 安装了 postgres-client-13 (http://apt.postgresql.org/pub/repos/ap)。pg_dump 仍然会抱怨版本不匹配,所以我卸载了 postgresql-client-11。之后 pg_dump 会抱怨“未安装 PostgreSQL 版本 11”。

无论重新安装和删除 PostgreSQL 客户端的次数或顺序如何,都无法解决此错误。有人能告诉我解决此问题的正确方法吗?

答案1

我刚刚也遇到了同样的问题。我使用的是 Debian 10,不过对你来说似乎没什么不同,因为我也使用了 PostgreSQL apt 存储库从版本 11 升级。

如果你运行file $(which pg_dump),你会看到它实际上只是一个符号链接/usr/share/postgresql-common/pg_wrapper。事实证明,这只是一个 perl 脚本,它根据你安装的 Postgres 版本调用相应版本的实用程序。

由于我们都做了同样的事情,我猜如果你查看文件postgresql.conf,在中/etc/postgresql/13/main/,端口将被设置5433为而不是默认的5432。这似乎是问题的根源。

我只需将端口设置改回正常设置5432并重新启动 postgres 服务,现在一切都按预期工作。

我实际上尝试过在调用和其他调用 的实用程序时通过命令行设置PGSERVICEPGHOST和变量,但我一直收到输入密码的提示,这很奇怪,因为我以用户身份运行所有程序。现在我只是称其为一个谜,有待将来的某个时间去探索。PGPORTcreatedbpg_wrapperpostgres

答案2

就我而言,我已经安装了 postgres-13,但是包 postgresql-14 仍然存在:

$ dpkg -l | grep postgresql-14
rc  postgresql-14                         14.9-0ubuntu0.22.04.1

一旦删除(dpkg --purge postgresql-14),pg_dump 便开始再次正常工作。

相关内容