Postgresql 9.2 pg_dump版本不匹配

211

我正在尝试使用 pg_dump 工具导出一个Postgresql数据库。

$ pg_dump books > books.out

但是我遇到了这个错误。

pg_dump: server version: 9.2.1; pg_dump version: 9.1.6
pg_dump: aborting because of server version mismatch

--ignore-version 选项现在已弃用,即使它能够工作,也不是解决我的问题的方法。

我该如何升级 pg_dump 来解决这个问题?

32个回答

2

安装完PostgreSQL版本后要匹配(9.2) 创建符号链接或新的快捷方式

- 在'/usr/bin'上

syntag is = sudo ln -s [path for use] [new shortcut name]

例子

sudo ln -s /usr/lib/postgresql/9.2/bin/pg_dump new_pg_dump

-- 如何调用:new_pg_dump -h 192.168.9.88 -U postgres 数据库名

2
如果数据库安装在另一台计算机上,它可能已安装正确版本的pg_dump。这意味着您可以通过SSH远程执行pg_dump命令: ssh username@dbserver pg_dump books > books.out 您也可以使用公钥身份验证实现无需密码的执行。实现此目标的步骤如下:
  1. 使用ssh-keygen命令生成一对密钥(如果尚未完成)。
  2. 将公钥复制到数据库服务器,通常是~/.ssh/authorized_keys。
  3. 使用ssh命令测试连接是否成功。

2
如果您正在使用Heroku的Postgres.app,那么pg_dump(以及所有其他二进制文件)都位于/Applications/Postgres.app/Contents/MacOS/bin/中。因此,在这种情况下,可以执行以下命令:ln -s /Applications/Postgres.app/Contents/MacOS/bin/pg_dump /usr/local/bin/pg_dump或ln -s /Applications/Postgres.app/Contents/MacOS/bin/* /usr/local/bin/.(以获取所有文件)。请注意保留HTML标签。

2

我的情况和你一样,我安装了两个PostgreSQL版本。

只需使用正确的pg_dump命令,您就无需更改任何内容。在您的情况下:

 $> /usr/lib/postgresql/9.2/bin/pg_dump books > books.out

1

对于Mac电脑,请使用find / -name pg_dump -type f 2>/dev/null查找pg_dump的位置。

对于我,我得到了以下结果:

Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump
/usr/local/Cellar/postgresql/9.4.5_2/bin/pg_dump

如果您不想使用sudo ln -s new_pg_dump old_pg_dump --force,只需在终端中使用Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump替换pg_dump即可。
例如:
Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump books > books.out

它对我有效!


1
在我的情况下,生产版本是12,开发版本是11,升级postgresql-client-xx包就足以解决我的问题。
参考网页: https://www.postgresql.org/download/linux/ubuntu/
sudo apt-get update && sudo apt-get -y upgrade postgresql-client

有一个有趣的事情需要指出,升级后之前的版本仍然保留安装:

mlazo@mlazo-pc:~$ dpkg -l |grep -i postgresql-client
ii  postgresql-client-11                                             11.8-1.pgdg18.04+1                                  amd64        front-end programs for PostgreSQL 11
ii  postgresql-client-12                                             12.4-1.pgdg18.04+1                                  amd64        front-end programs for PostgreSQL 12


希望我的经验对某些人有所帮助。
问候,

1

我遇到了同样的信息,对我来说,需要调整以下内容:

export LD_LIBRARY_PATH=/usr/pgsql-12/lib:....
export LD_RUN_PATH=/usr/pgsql-12/lib:.....

0

完整步骤教程

您的本地版本需要与远程服务器上 AWS 使用的版本匹配。 不幸的是,apt-get install 命令会滞后于官方发布。

因此,您需要按照以下方式进行操作:

sudo apt-get remove postgresql
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 -

然后检查您的错误消息应该是类似于

pg_dump: server version: 12.3; pg_dump version: 10.16 (Ubuntu 10.16-0ubuntu0.18.04.1)

这意味着您想要版本12(而不是13),通过在新的安装过程中指定版本号(不包括小版本号)安装相应版本:

sudo apt-get -y install postgresql-12

现在它可以工作了:


pg_dump -h {{endpoint}} -U {{username}} -f dump.sql {{tablename}}

注意:您可以在“连接性和安全性”中获取端点,前往https://us-east-2.console.aws.amazon.com/rds/home?region=us-east-2并单击您的数据库实例


0

第一步:查看Postgres是否有适用于您的操作系统所需版本的预构建二进制存储库:https://www.postgresql.org/download/

如果这不起作用(例如,如果您的发行版存在但不再受支持,因此没有为其提供正确的二进制文件),或者如果您只想直接使用源代码而不必担心添加远程存储库等问题。

我所做的是下载所需版本的Postgres原始源代码。

解压它,进入其中,构建它./configure && make,然后:

postgresql-12.3 $ find . -name pg_dump
./src/bin/pg_dump/pg_dump
$ ./src/bin/pg_dump/pg_dump


unable to load libpg.so.5 # if it says this...
$ find . -name libpg.so.5
$ export LD_LIBRARY_PATH=/your/path/to/the/shared/dir/of/above/file

$ ./src/bin/pg_dump/pg_dump # works now

现在您可以访问任何适用于您的计算机的版本。这应该是任何版本。

-1

对于使用“官方”postgresql仓库的Ubuntu 20.04,从pg12迁移到pg13,我必须执行以下操作:

sudo apt purge postgresql-12

这对我来说非常难以确定。我尝试了各种不同的软件包:

  • postgresql-client
  • postgresql-client-common
  • postgresql-##
  • postgresql-client-##
  • postgresql-server-dev-##
  • pgadmin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接