pg_dump版本在Debian上不匹配


8

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

我遇到的问题是试图运行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


您是否知道这是课程的水准,因为您正在运行Debian Sid?很不稳定 是什么which pg_dump给你?只是为了确认它实际上是打包版本,而不是其他版本。
slm

是的,我检查了一下。它显示了/usr/bin/pg_dumpdpkg -S /usr/bin/pg_dump给了我postgresql-client-common: /usr/bin/pg_dump
超级猎豹

查看我的答案,看看是否有帮助。
slm

Answers:


3

几个选择。

从Postgres网站下载.deb 9.1

看一下标题为:Linux downloads(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


PostgreSQL的版本并不是真正的问题。这是pg_dump旧的和不兼容的版本。有没有我可以找到的特定地方?
超级猎豹

我认为它与这些软件包捆绑在一起。我只下载特定版本的预构建版本之一,然后使用pg_dump命令即可。它们不必安装,只需解压缩到目录中即可。您可能必须设置一个环境变量以指向库目录,但这应该很简单。
slm

4

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

在debian / ubuntu上:

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

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


4

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

$ 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

2

除了上述答案之外,您还可以pg_dump通过该cluster选项来告诉和其他命令使用哪个版本。例如,

$pg_dump --cluster 9.1/main

将针对9.1版本。

请注意,这利用了Ubuntupg_wrapper随附的,postgresql-common并且可以在Ubuntu(Debian)上使用。另请注意,群集(main在示例中)的设置可能有所不同。

有关更多信息,pg_wrapper都可以在此找到DBA答案


0

我今天遇到了同样的问题,Erick的回答似乎是最准确的。问题可能出在您的postgresql-client版本不同,而pg_dump使用的是最早的客户端。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.