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

Man*_*rer 1 postgresql pg-dump postgresql-10

我正在尝试从Amazon RDS转储Postgres数据库,我最近更新到10.1.为此,我pg_dumpentrepreneedb.com(http://get.enterprisedb.com/postgresql/postgresql-10.1-1-linux-x64-binaries.tar.gz)下载10.1,但当我尝试使用它时,我得到了以下错误:

pg_dump: server version: 10.1; pg_dump version: 10.1
pg_dump: aborting because of server version mismatch
Run Code Online (Sandbox Code Playgroud)

这在RDS版本9.6和我使用pg_dump9.6(从同一位置下载)之前工作正常.

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

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

这可能是什么问题?

Nic*_*ick 8

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

-- Dumped from database version 9.6.6
-- Dumped by pg_dump version 10.1
Run Code Online (Sandbox Code Playgroud)

另外,pg_dump版本,比如10.0,应该适用于服务器版本10.1及更高版本的10.*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.)
 */
Run Code Online (Sandbox Code Playgroud)

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

  • 你下载的不是官方的pg_dump,你是从Postgres公司的一家公司购买的,它可以通过某种方式修改(注意在URL中添加"-1",所以你使用他们的pg_dump版本标记为"10.1-1");
  • 您正在使用已修改的(由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
Run Code Online (Sandbox Code Playgroud)

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

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