2

我正在尝试从最近更新到 10.1 的 Amazon RDS 中转储 Postgres 数据库。为此,我从enterprisedb.com ( http://get.enterprisedb.com/postgresql/postgresql-10.1-1-linux-x64-binaries.tar.gzpg_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_dump9.6(从同一位置下载)时。

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

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

这里可能是什么问题?

4

2 回答 2

10

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

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

此外,pg_dump 版本,比如 10.0 应该在 10.* 分支中与服务器版本 10.1 和更高版本一起使用——所以次要版本不应该是问题。请参阅 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”,因此您使用他们的 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

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

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

于 2018-03-16T14:45:37.680 回答
0

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

于 2018-03-12T08:54:10.533 回答