Debian 上的 pg_dump 版本不匹配

Debian 上的 pg_dump 版本不匹配

我在 Debian Unstable/Sid 上运行 PostgreSQL。我已经安装了postgresql, postgresql-client, postgresql-client-common(143)的当前版本 (9.1) 。

我遇到的问题是尝试运行pg_dump.我收到此错误:

pg_dump: server version: 9.1.9; pg_dump version: 9.0.6
pg_dump: aborting because of server version mismatch

我似乎不知道如何获得更新版本的pg_dump.它似乎来自postgresql-client-common包,我尝试apt-get --reinstall在它上运行,但这并没有给我带来更新版本的 pg_dump。

我该如何解决这个问题?或者我在哪里可以找到包含较新版本的软件包pg_dump

答案1

另一种可能适合您的选择是卸载旧的并行版本:

在 debian/ubuntu 上:

sudo apt-get remove postgresql-8.4
sudo apt-get remove postgresql-client-8.4

这保留了更高版本(例如 9.1),仅删除旧的 8.4 客户端和服务器库。

答案2

就我而言,我有两组数据库,一些在旧版本的 Postgresql 8.4 上运行,另一些在版本 9.1 上运行。我所做的是使用下面的命令pg_dump在 Linux 机器中定位locate

$ locate pg_dump

/usr/bin/pg_dump
/usr/bin/pg_dumpall
/usr/lib/postgresql/8.4/bin/pg_dump
/usr/lib/postgresql/8.4/bin/pg_dumpall
/usr/lib/postgresql/9.1/bin/pg_dump
/usr/lib/postgresql/9.1/bin/pg_dumpall

由于默认值/usr/bin/pg_dump是 Postgresql 版本 8.4,因此我只是/usr/lib/postgresql/9.1/bin/pg_dump在从运行在不同端口上的 9.1 数据库转储时从命令行指定,并且它有效。

$ /usr/lib/postgresql/9.1/bin/pg_dump -p 5434

答案3

有几个选择。

从 Postgres 站点下载 .deb 9.1

看看这个标题为的页面:Linux 下载 (Debian) - PostgreSQL。您可以直接从站点下载更新的 .deb,或者重新指向其存储库,然后执行如下命令:

apt-get install postgresql-9.1

Debian 向后移植

您也许可以在这里找到特定版本,http://backports.debian.org/

使用通用版本

你可以下载 PostgreSQL 的二进制版本并将其安装在您的主目录中或/opt例如。

下载供企业使用的预构建版本之一

我对这些没有太多经验,但你也许可以下载其中之一与通用版本类似,并使用其安装中的客户端,按原样转储数据库。

交叉分发包

你可以下载包它们的构建与分发无关。我刚刚下载了 9.1.9 版本,它确实包含该pg_dump工具。

该软件以 .rpm 或 .deb 形式提供,并安装到/opt/postgres/9.1.具体来说,pg_dump这里提供了该工具: /opt/postgres/9.1/bin/pg_dump

答案4

我今天遇到了同样的问题,埃里克的答案似乎是最准确的。问题可能是您有不同版本的 postgresql-client 并且 pg_dump 仅使用最旧的客户端。

您可以通过使用他所描述的完整路径来解决此问题,但我发现一个更简单的解决方案是删除 postgresql-client-common 包(删除所有客户端),然后重新安装 postgresql-client-9.3。这只会给你留下你可能想要的最新版本的 pg_dump 。

相关内容