运行pg_restore时,在文件头中获取"[archiver]不支持的版本(1.13)"

Mar*_*rom 161 postgresql heroku pg-restore

我刚刚在mac os上升级到postgres 10.2,在heroku上匹配10.2.我正在尝试下载数据库的副本并在本地恢复它.在升级之前,恢复将正常工作.

我跑

pg_restore --verbose --clean --no-acl --no-owner -h localhost -d database_name backup.dump
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

pg_restore:[archiver]文件头中不支持的版本(1.13)

数据库似乎工作正常.它是一个rails应用程序,我升级了pg宝石.我可以跑rake db:create,db:migrate也很好.

小智 193

您需要升级本地postgres才能获得2018-03-01的最后一个安全补丁,就像Heroku第一次游行一样.你需要的最后版本之一10.3,9.6.8,9.5.12,9.4.17,和9.3.22.

安全补丁可以在https://www.postgresql.org/about/news/1834/找到.

似乎补丁修改了pg_dump,这可能就是为什么我们不能再使用pg_restore而没有针对Heroku转储的补丁(应用补丁).

  • `brew upgrade postgresql``brew postgresql-upgrade-database` (86认同)
  • @ gerry3的评论是两个单独的命令.小心复制粘贴! (6认同)
  • 抬起两个命令`brew upgrade postgresql && brew postgresql-upgrade-database`确实解决了这个问题,但是我的本地数据库在此过程中被丢弃了.如果您有关键数据,请备份它们! (4认同)
  • 使用Linux Mint我的版本是9.5.11,它说它是最新的.如何强制它使用apt-get使用最新版本? (2认同)

Can*_*nuk 18

今天我遇到了同样的问题,我不知道Heroku方面是否有什么变化,因为本地我运行9.6但是Heroku上的数据库是9.4,所以它似乎不是关于版本点差异(它一直工作到今天.)

如果您在Mac上使用Postgres.app(https://postgresapp.com/),请确保您正在运行v2.1.3(截至撰写本文时为最新版本).当您升级Postgres.app时,您将获得Postgres的最新补丁版本(这可能会导致您目前遇到的不匹配 - Heroku已升级为最新的安全补丁,而您的本地机器可能没有它).

我不得不将Postgres.app从2.1.0升级到2.1.3,它解决了这个问题.


小智 12

从昨天(03/01/2018)开始,我们在从PostgreSQL 9.5上运行的Heroku恢复备份时遇到了问题:

pg_restore: [archiver] unsupported version (1.13) in file header
Run Code Online (Sandbox Code Playgroud)

将我们的PostgreSQL版本从9.5.11升级到9.5.12解决了这个问题.


小智 12

我第一次遇到这个问题,这是我如何将Heroku数据库恢复到我的本地:

$ rails db:drop
$ heroku pg:pull DATABASE_URL <insert local DB name> --app <app-name>
Run Code Online (Sandbox Code Playgroud)


Die*_*gão 7

对于那些试图在Ubuntu中升级postgresql而没有成功的人(如上面评论的Johan),尝试使用PostgreSQL apt存储库,如官方PostgreSQL下载说明中所述:https://www.postgresql.org/download/linux/ubuntu /

deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)


alx*_*pck 6

我的修复包括更新我的Postgres.app和更新我的本地自制的PostgreSQL.

通过Canuk的回答更新我的Postgres.app:

打开Postgres.app>检查更新...

通过gerry3对已接受答案的评论更新我当地的自制PostgreSQL:

brew upgrade postgresql brew postgresql-upgrade-database


Iva*_*van 5

我不建议您在本地将数据库升级到新的主要版本(请应用安全补丁),只是为了解决这个问题,因为您希望匹配生产中的任何版本.

这修复了它在Ubuntu 16.04上,从Heroku数据库恢复.

首先,确保你有postgresql repo作为diego提到.然后安装升级后的客户端.

sudo apt-get update && sudo apt-get install postgresql-client-10

如果你的Ubuntu 17.04或17.10,注意PostgreSQL的兴致回购并不会有更新的客户的需要.您将需要使用xenial Postgres repo.


And*_*rew 5

在Windows上使用pgAdmin 3出现此问题。

从pgAdmin 3升级到pgAdmin 4为我解决了这个问题。

如果您使用第三方工具(例如PgAdmin)还原提供的转储文件,则即使安装的Postgres版本是最新的,还原也可能无法成功。这是由于第三方工具经常捆绑自己的pg_restore二进制版本,而这些版本可能不是最新的。 https://help.heroku.com/YNH1ZJUS/why-am-i-getting-pg_restore-archiver-unsupported-version-1-13-in-file-header-error-with-pg_restore


小智 5

我在 pgadmin III 上遇到了这个问题,并能够通过切换二进制文件位置来修复它:

文件菜单 > 选项 > 二进制路径,然后将“PG bin 路径”更改为 postgresql/9.x/bin 而不是 ProgramFiles/pgadmin。之后恢复效果很好。