it-swarm.com.de

"[Archiver] nicht unterstützte Version (1.13) im Dateiheader abrufen" beim Ausführen von pg_restore

Ich habe gerade ein Upgrade auf Postgres 10.2 für Mac OS und 10.2 für Heroku durchgeführt. Ich versuche, eine Kopie der Datenbank herunterzuladen und lokal wiederherzustellen. Vor dem Upgrade würde die Wiederherstellung gut funktionieren.

Ich renne

pg_restore --verbose --clean --no-acl --no-owner -h localhost -d database_name backup.dump

aber ich erhalte diesen Fehler:

pg_restore: [archiver] nicht unterstützte Version (1.13) im Dateiheader

Die Datenbank scheint in Ordnung zu sein. Es ist eine Rails-App und ich habe die pg-Steine ​​aktualisiert. Ich kann rake db:create und db:migrate einfach ausführen. 

152
Mark Swardstrom

Sie müssen ein Upgrade Ihrer lokalen Postgres durchführen, um den letzten Sicherheitspatch vom 01.01.2018 zu erhalten, wie Heroku den 1. März. Sie benötigen eine der letzten Versionen 10.3, 9.6.8, 9.5.12, 9.4.17 und 9.3.22

Das Sicherheitspatch finden Sie hier https://www.postgresql.org/about/news/1834/

Es scheint, als hätte der Patch pg_dump modifiziert, deshalb können wir pg_restore wahrscheinlich nicht mehr ohne diesen Patch für den Dump von Heroku (mit dem Patch) verwenden.

181
jumichot

Ich bin heute auf dieselbe Ausgabe gestoßen, ich weiß nicht, ob sich auf Herokus Seite etwas geändert hat, weil ich lokal 9.6 verwende, aber meine Datenbank auf Heroku 9.4 ist, es schien sich also nicht um den Unterschied der Versionspunkte zu handeln hat bis heute gearbeitet.)

Wenn Sie Postgres.app ( https://postgresapp.com/ ) auf einem Mac verwenden, stellen Sie sicher, dass Sie v2.1.3 ausführen (zum jetzigen Zeitpunkt ist dies die neueste Version). Wenn Sie die Postgres.app aktualisieren, erhalten Sie die neueste Patch-Version von Postgres (die wahrscheinlich zu einem Konflikt führt, den Sie derzeit feststellen. Heroku hat ein Upgrade für den neuesten Sicherheitspatch durchgeführt und auf Ihrem lokalen Computer ist dies möglicherweise nicht der Fall). 

Ich musste Postgres.app von 2.1.0 auf 2.1.3 aufrüsten und löste das Problem.

17
Canuk

Seit gestern (01.03.2014) hatten wir auch Probleme, ein Backup von Heroku wiederherzustellen, das auf PostgreSQL 9.5 läuft:

pg_restore: [archiver] unsupported version (1.13) in file header

Ein Problem mit der Aktualisierung unserer PostgreSQL-Version von 9.5.11 auf 9.5.12 wurde behoben.

12
cbx

Das erste Mal, als ich dieses Problem hatte, stellte ich die Heroku-Datenbank in meinem lokalen Verzeichnis wieder her:

$ Rails db:drop
$ heroku pg:pull DATABASE_URL <insert local DB name> --app <app-name>
12
Jim Padilla

Für diejenigen, die versuchen, Postgresql in Ubuntu ohne Erfolg zu aktualisieren (wie Johans Kommentar oben), versuchen Sie es mit dem PostgreSQL-Repository, wie in den offiziellen PostgreSQL-Downloadanweisungen angegeben: 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
7
Diego Aragão

Der Fix für mich bestand aus both der Aktualisierung meiner Postgres.app und der Aktualisierung meiner lokalen PostgreSQL-Datenbank. 

Aktualisiere meine Postgres.app über Canuk's Antwort:

Postgres.app öffnen> Nach Updates suchen ...

Aktualisieren Sie mein lokales PostgreSQL-PostgreSQL über den Kommentar von gerry3 zur akzeptierten Antwort:

brew upgrade postgresqlbrew postgresql-upgrade-database

6
alxpck

Ich empfehle Ihnen nicht, Ihre Datenbank lokal auf eine neue Hauptversion zu aktualisieren (wenden Sie Sicherheitspatches an).

Dieses Problem wurde unter Ubuntu 16.04 behoben und aus einer Heroku-Datenbank wiederhergestellt. 

Stellen Sie zunächst sicher, dass Sie das postgresql-Repo wie das genannte Diego haben. Dann installieren Sie den aktualisierten Client.

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

Wenn Sie Ubuntu 17.04 oder 17.10 verwenden, sollten Sie beachten, dass das zesty repo von PostgreSQL not nicht die aktualisierten Clients enthält, die Sie benötigen. Sie sollten stattdessen das xenial Postgres-Repo verwenden. 

5
Ivan

Hatte dieses Problem unter Windows mit pgAdmin 3.

Ein Upgrade von pgAdmin 3 auf pgAdmin 4 hat das Problem für mich gelöst.

Wenn Sie ein Drittanbieter-Tool wie PgAdmin verwenden, um die .__ wiederherzustellen. Wenn die Dump-Datei bereitgestellt wird, schlägt die Wiederherstellung möglicherweise selbst mit der .__-Datei fehl. installierte Postgres-Version auf dem neuesten Stand. Das ist wegen Tools von Drittanbietern bündeln häufig ihre eigenen Versionen von pg_restore binär, das ist möglicherweise nicht auf dem neuesten Stand . https://help.heroku.com/YNH1ZJUS/why-am-i-getting-pg_restore-archiver-unsupported-version-1-13-in-file-header-error-with-pg_restore

3
Andrew

Ich bin auf dieses Problem auf pgadmin III gestoßen und konnte es beheben, indem ich den Speicherort der Binärdateien wechselte:

Menü "Datei"> "Optionen"> "Binäre Pfade" und dann "PG-Bin-Pfad" in "postgresql/9.x/bin" anstelle von "Programme/pgadmin". Die Wiederherstellung hat danach einwandfrei funktioniert.

2
Guest

Sie verwenden eine alte Version von pg_restore, die die Wiederherstellung der bereitgestellten Dump-Datei nicht unterstützt. Stellen Sie sicher, dass Sie die neueste Postgres-Version verwenden, die höher sein muss als die folgende Version: https://www.postgresql.org/about/news/1834/ (10.3, 9.6.8, 9.5.12 9.4.17 und 9.3.22).

Sie können die von Ihnen verwendete Version von pg_restore überprüfen, indem Sie pg_restore --version ausführen.

Wenn Sie ein Drittanbieter-Tool wie PgAdmin zum Wiederherstellen der bereitgestellten Sicherungsdatei verwenden, schlägt die Wiederherstellung möglicherweise fehl, selbst wenn die installierte Postgres-Version auf dem neuesten Stand ist. Dies liegt daran, dass Tools von Drittanbietern häufig eigene Versionen der Binärdatei pg_restore bündeln, die möglicherweise nicht auf dem neuesten Stand sind.

1
Vagner Dev

Hier habe ich das Problem unter Ubuntu (16.04 LTS) gelöst, wo pg_restore/pg_dump mir eine ältere Version von psql gab 

$ pg_restore --version
pg_restore (PostgreSQL) 9.4.8

$ psql --version
psql (PostgreSQL) 9.5.14

Das Problem ist, dass ich mehrere pg-Versionen installiert habe und pg_restore auf die frühere Version verwies

$ 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

Das Update besteht darin, eine ~/.postgresqlrc-Datei zu erstellen, die auf die korrekte Version verweist

$ cat ~/.postgresqlrc

9.5 main *

Sobald dies geschehen ist, zeigt pg_restore auf die korrekte Version, und der Befehl wird durchlaufen

Details hier: https://serverfault.com/questions/610777/wrong-version-of-pg-dump-on-ubuntu

0
Rabi Cherian

Ich bin auf den gleichen Fehler gestoßen. Ich habe lokal auf postgresql 10.3 aktualisiert, und das Problem wurde für mich behoben.

0
Sean McCleary

Für Windows:

Öffnen Sie die Eingabeaufforderung (cmd), gehen Sie zu Position C:\Program Files\PostgreSQL\9.6\bin und führen Sie die folgenden Befehle aus:

pg_restore -U username -d dbname -1 filename.dump
pg_restore -U postgres -d app -1 G:\app09-07-2019.backup

Hoffe es wird dir helfen

0
Reena khan