Postgres pg_dump版本不匹配...即使版本相同

时间:2018-03-08 08:58:21

标签: postgresql pg-dump postgresql-10

我试图从Amazon RDS转储Postgres数据库,我最近更新到10.1。为此,我从enterprisedb.comhttp://get.enterprisedb.com/postgresql/postgresql-10.1-1-linux-x64-binaries.tar.gz)下载pg_dump 10.1但是当我尝试使用它时,我收到以下错误:

pg_dump: server version: 10.1; pg_dump version: 10.1
pg_dump: aborting because of server version mismatch

之前的工作正常,当RDS版本为9.6且我使用pg_dump 9.6(从同一位置下载)时。

我尝试了较新版本的pg_dump(10.2和10.3)但得到了同样的错误(这是有道理的,因为那些新版本实际上并不匹配RDS版本。)

我还检查了我的服务器上没有安装其他pg_dump(Ubuntu 15.04 - 我知道我应该更新......等待18.04),找到一个并删除它,但得到同样的错误。

这可能是什么问题?

2 个答案:

答案 0 :(得分:7)

首先,pg_dump与旧版本的服务器完美配合。在这种情况下,您将看到如下行:

-- Dumped from database version 9.6.6
-- Dumped by pg_dump version 10.1

另外,pg_dump版本,比方说,10.0应该适用于10中的服务器版本10.1及更高版本。* branch - 所以次要版本不应该是问题。在pg_dump的源代码中查看此评论:https://github.com/postgres/postgres/blob/REL_10_STABLE/src/bin/pg_dump/pg_dump.c#L668

/*
 * We allow the server to be back to 8.0, and up to any minor release of
 * our own major version.  (See also version check in pg_dumpall.c.)
 */

在您的情况下,问题可能是由以下方面之一引起的:

  • 你下载的不是官方pg_dump,你是从Postgres公司的一家公司下载的,它可以通过某种方式进行修改(注意在URL中添加“-1”,所以你使用他们的标签为“10.1-1”的pg_dump版本); < / LI>
  • 您正在使用已修改的(由AWS工程师)Postgres服务器;
  • 最近,Postgres项目中的版本控制架构已经从3个版本更改为2个版本。这意味着,由于更改相对较新,因此可能存在版本检测功能中的一些错误。

无论如何,您提供的错误消息说10.1和10.1不匹配 - 这根本不正常。肯定存在一个错误,但在哪里都不明显。

我会尝试以下步骤。

1)使用官方(社区支持的)pg_dump。在Ubuntu上,您只需使用官方软件包安装“postgresql-client-10”:

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install -y postgresql-client-10

2)如果上一步没有帮助,请尝试联系AWS支持,要求他们仔细检查此问题。

3)最后,尝试使用安装在Ubuntu机器上的vanilla Postgres重现问题,如果它仍然存在,则肯定需要将其报告为错误https://www.postgresql.org/docs/10/static/bug-reporting.html

答案 1 :(得分:0)

尝试检查权限 - 路径是什么