我刚刚在mac os上升级到postgres 10.2,这与heroku上的10.2相匹配。 我正在尝试下载数据库的副本并在本地还原它。 在升级之前,还原将正常工作。
我跑
pg_restore --verbose --clean --no-acl --no-owner -h localhost -d database_name backup.dump
但是我收到此错误:
pg_restore:文件头中的 [存档器] 不支持的版本 (1.13(
数据库似乎工作正常。 这是一个轨道应用程序,我升级了 pg 宝石。 我可以跑rake db:create
,db:migrate
很好。
您需要升级本地 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,这可能就是为什么如果没有该补丁来转储 Heroku(应用补丁(就不能再使用 pg_restore 的原因。
我今天遇到了同样的问题,我不知道 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,它解决了这个问题。
我第一次遇到这个问题,这是我如何将 Heroku 数据库恢复到我的本地数据库的方法:
$ rails db:drop
$ heroku pg:pull DATABASE_URL <insert local DB name> --app <app-name>
从昨天(03/01/2018(开始,我们也在从PostgreSQL 9.5上运行的Heroku恢复备份时遇到了问题:
pg_restore: [archiver] unsupported version (1.13) in file header
将我们的 PostgreSQL 版本从 9.5.11 升级到 9.5.12 修复了此问题。
对于那些试图在 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
<</div>
div class="one_answers"> 对我来说,修复涉及更新我的 Postgres.app 和更新我的本地自制 PostgreSQL。
通过Canuk的答案更新我的 Postgres.app:
打开 Postgres.app>检查更新...
通过gerry3对接受答案的评论更新我的本地自制软件PostgreSQL:
brew upgrade postgresql
brew postgresql-upgrade-database
在使用 pgAdmin 3 的 Windows 上遇到此问题。
从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
我不建议在本地将您的数据库升级到新的主要版本(应用安全补丁(,只是为了解决这个问题,因为您希望它与您在生产中的任何版本相匹配。
这在 Ubuntu 16.04 上修复了它,从 Heroku 数据库恢复。
首先,确保你有diego提到的postgresql存储库。然后安装升级后的客户端。
sudo apt-get update && sudo apt-get install postgresql-client-10
如果您是 Ubuntu 17.04 或 17.10,请注意 PostgreSQL 的热情存储库没有您需要的更新客户端。您将希望改用 xenial Postgres 存储库。
我在pgadmin III上遇到了这个问题,并且能够通过切换二进制文件位置来修复它:
"文件"菜单>"二进制路径">选项,然后将"PG bin path"更改为postgresql/9.x/bin,而不是ProgramFiles/pgadmin。之后恢复工作正常。
这是我在 Ubuntu(16.04 LTS( 上解决问题的方式,其中 pg_restore/pg_dump 给了我一个旧版本,来自 psql
$ pg_restore --version
pg_restore (PostgreSQL) 9.4.8
$ psql --version
psql (PostgreSQL) 9.5.14
问题是我安装了多个 pg 版本,pg_restore指向早期版本
$ pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
9.4 main 5432 online postgres /var/lib/postgresql/9.4/main /var/log/postgresql/postgresql-9.4-main.log
9.5 main 5433 online postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
解决方法是创建一个指向正确版本的 ~/.postgresqlrc 文件
$ cat ~/.postgresqlrc
9.5 main *
完成此操作后,pg_restore指向正确的版本,命令将完成
详细信息如下: https://serverfault.com/questions/610777/wrong-version-of-pg-dump-on-ubuntu
您使用的是不支持还原提供的转储文件的旧版本的pg_restore二进制文件。请确保您使用最新的 Postgres 版本,该版本必须高于以下版本:https://www.postgresql.org/about/news/1834/(10.3、9.6.8、9.5.12、9.4.17 和 9.3.22(。
您可以通过运行 pg_restore --version 来检查您正在使用的pg_restore版本。
如果使用第三方工具(如 PgAdmin(还原提供的转储文件,则即使安装的 Postgres 版本是最新的,还原也可能无法成功。这是由于第三方工具经常捆绑自己的pg_restore二进制文件版本,这些版本可能不是最新的。
我遇到了同样的错误。我在本地更新到 postgresql 10.3,这为我解决了问题。
对于 Windows:
打开命令提示符 ( cmd
(,然后转到位置 C:Program FilesPostgreSQL9.6bin
并运行以下命令:
pg_restore -U username -d dbname -1 filename.dump
pg_restore -U postgres -d app -1 G:app09-07-2019.backup
希望对您有所帮助
我在 10 分钟前遇到了同样的问题,并从 2005 年发现了这个线程:https://www.postgresql.org/message-id/1106163722.780395.266900%40z14g2000cwz.googlegroups.com
基本上这家伙说转储文件已损坏。