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

标签 postgresql pg-dump postgresql-10

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

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),找到一个并删除它,但得到同样的错误.

这可能是什么问题?

最佳答案

首先,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”,因此您使用他们标记为“10.1-1”的 pg_dump 版本);
  • 您正在使用(由 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

关于postgresql - Postgres pg_dump 版本不匹配...即使版本相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49169094/

相关文章:

sql - 根据组内的条件选择行

c# - 无法从 pg_dump.exe 命令行退出

postgresql - pg_dumpall 不提示密码

postgresql - Postgres 命令行 - 清除/删除我正在输入的查询

ruby-on-rails - Rails 中的 PostgreSQL : How do I make the server run locally AND accept connections on the Unix domain socket?

postgresql - postgresql 中的多主复制

postgresql - 更改其他 View 中使用的列的类型

postgresql - 如何将二进制 pgdump(压缩)转换为纯 SQL 文件?

postgresql - 无法使用不同的用户名从 pg_dump 恢复 psql 数据库

sql - Postgres - 如何找到某一列的最大交集的行