Ottenere "[archiver] versione non supportata (1.13) nell'intestazione del file" quando si esegue pg_restore


165

Ho appena aggiornato a Postgres 10.2 su Mac OS che corrisponde a 10.2 su Heroku. Sto cercando di scaricare una copia del database e ripristinarlo localmente. Prima dell'aggiornamento il ripristino funzionava bene.

io corro

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

ma sto ricevendo questo errore:

pg_restore: [archiviatore] versione non supportata (1.13) nell'intestazione del file

Il database sembra funzionare correttamente. È un'app di binari e ho aggiornato le gemme di PG. Posso correre rake db:createe db:migratebene.

Risposte:


196

Devi aggiornare i tuoi postgres locali per ottenere l'ultima patch di sicurezza dall'01 / 03/2018, come Herokuil 1 ° marzo. Avete bisogno di una delle ultime uscite 10.3, 9.6.8, 9.5.12, 9.4.17, e 9.3.22.

La patch di sicurezza è disponibile qui https://www.postgresql.org/about/news/1834/ .

Sembra che la patch sia stata modificata pg_dump, probabilmente è per questo che non possiamo più usare pg_restore senza quella patch per il dump di Heroku (con la patch applicata).


87
brew upgrade postgresql brew postgresql-upgrade-database
gerry3,

2
Usando Linux Mint la mia versione è la 9.5.11 e dice che è aggiornata. Come lo costringo a usare l'ultima versione usando apt-get?
Kritz

Postgresql 9.5.12 è ora nella versione ufficiale di Ubuntu 16.04 xenial repo pacchetti.ubuntu.com/xenial/postgresql-9.5
HarlemSquirrel

6
Il commento di @ gerry3 è due comandi separati. Attenzione copia-e-pastori!
Joe Masilotti,

4
testa a testa i due comandi brew upgrade postgresql && brew postgresql-upgrade-databaserisolvono davvero il problema ma i miei database locali sono stati eliminati lungo la strada. Esegui il backup se hai dati critici!
Jarvis Johnson

19

Ho riscontrato questo stesso problema oggi, non so se qualcosa è cambiato dalla parte di Heroku, perché localmente sto eseguendo 9.6 ma il mio database su Heroku è 9.4, quindi non sembra riguardare la differenza del punto di versione ( funzionava fino ad oggi.)

Se stai usando Postgres.app ( https://postgresapp.com/ ) su un Mac assicurati di essere in esecuzione v2.1.3(al momento della stesura che è la versione più recente). Quando aggiorni Postgres.app ottieni la versione più recente della patch di Postgres (che probabilmente sta causando la mancata corrispondenza che stai riscontrando attualmente: Heroku ha aggiornato con l'ultima patch di sicurezza e il tuo computer locale potrebbe non averlo).

Ho dovuto aggiornare Postgres.app dalla 2.1.0 alla 2.1.3 e il problema è stato risolto.


12

Da ieri (03/01/2018) abbiamo anche avuto problemi a ripristinare un backup da Heroku in esecuzione su PostgreSQL 9.5:

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

L'aggiornamento della nostra versione PostgreSQL dalla 9.5.11 alla 9.5.12 ha risolto il problema.


12

La prima volta che ho riscontrato questo problema, ecco come ho ripristinato il database Heroku sul mio locale:

$ rails db:drop
$ heroku pg:pull DATABASE_URL <insert local DB name> --app <app-name>

Bella soluzione, non lo sapevo heroku pg:pull. Ma questa non è una soluzione adatta, poiché non è ancora possibile ripristinare localmente un precedente dump heroku, anche se immagino che questo utilizza la risorsa del database live durante il pull.
demental

1
Non sono sicuro a cosa servano i voti negativi. OP sta letteralmente chiedendo "Sto cercando di scaricare una copia del database e ripristinarlo localmente" e sto rispondendo a quella specifica domanda.
Jim Padilla,

7

Per coloro che stanno tentando di aggiornare Postgresql in Ubuntu senza successo (come ha commentato Johan sopra), prova a utilizzare il repository apt PostgreSQL, come indicato nelle istruzioni di download PostgreSQL ufficiali: 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

6

La correzione per me riguardava sia l' aggiornamento di Postgres.app che l'aggiornamento del mio PostgreSQL homebrew locale.

Aggiorna il mio Postgres.app tramite la risposta di Canuk:

Apri Postgres.app> Verifica aggiornamenti ...

Aggiorna il mio PostgreSQL homebrew locale tramite il commento di gerry3 sulla risposta accettata:

brew upgrade postgresql brew postgresql-upgrade-database


Non ho dovuto aggiornare il mio PostgreSQL homebrew. È stato sufficiente solo l'aggiornamento di Postgres.app all'ultima versione.
mineralwasser

l'aggiornamento da postgres.app risolto il mio problema
FutoRicky,

6

Ha avuto questo problema su Windows usando pgAdmin 3.

L'aggiornamento da pgAdmin 3 a pgAdmin 4 ha risolto il problema per me.

Se stai utilizzando uno strumento di terze parti, come PgAdmin, per ripristinare il file di dump fornito, il ripristino potrebbe non riuscire anche con la versione di Postgres installata aggiornata. Ciò è dovuto a strumenti di terze parti che spesso raggruppano le proprie versioni del file binario pg_restore, che potrebbero non essere aggiornate. https://help.heroku.com/YNH1ZJUS/why-am-i-getting-pg_restore-archiver-unsupported-version-1-13-in-file-header-error-with-pg_restore


Grazie, ha funzionato per me. Sono su PostgreSQL 9.5.12 e stavo usando pgAdmin 3. pgAdmin 4 è stato in grado di funzionare pg_restorecorrettamente.
Alexander,

5

Non ti consiglio di aggiornare il tuo DB a una nuova versione principale localmente (applica patch di sicurezza) solo per risolvere questo problema in quanto desideri che corrisponda a qualsiasi versione in produzione.

Questo è stato risolto su Ubuntu 16.04, ripristinando da un database Heroku.

Innanzitutto, assicurati di avere il repository postgresql come menzionato diego. Quindi installare il client aggiornato.

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

Se si è Ubuntu 17.04 o 17.10, tenere presente che il repository zesty di PostgreSQL non ha i client aggiornati necessari. Dovrai invece utilizzare il repository Postgres xenial.


Consiglio di aggiornare il db, poiché è una patch di sicurezza che è abbastanza importante se il database esegue query da utenti non fidati : wiki.postgresql.org/wiki/… "Lo scopo della versione era indirizzare CVE-2018-1058, che descrive come un utente può creare oggetti con nomi simili in diversi schemi che possono modificare il comportamento delle query di altri utenti e causare comportamenti imprevisti o dannosi, noto anche come attacco "cavallo di troia". "
RobM

Ricevo Unable to locate package postgresql-client-10quando lo faccio
Doug

@RobM concordato. Con "non raccomandare l'aggiornamento ..." mi riferivo al fatto di non eseguire l'aggiornamento a una versione principale che non si sta utilizzando in produzione. Sicuramente saggio per l'aggiornamento all'ultima patch di sicurezza all'interno di una versione principale a livello locale e ovviamente in produzione. Modificherò la verbosità nella mia risposta per riflettere meglio il mio significato.
Ivan

1
@Doug Non dimenticare di aggiungere prima il repository postgres appropriato. Simile a quanto descritto in questo commento. stackoverflow.com/a/49116272/3975541
Ivan

4

Ecco come ho risolto il problema su Ubuntu (16.04 LTS) in cui pg_restore / pg_dump mi ha dato una versione precedente, da psql

$ pg_restore --version
pg_restore (PostgreSQL) 9.4.8

$ psql --version
psql (PostgreSQL) 9.5.14

Il problema è che ho installato più versioni di pg e pg_restore puntava alla versione precedente

$ 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

La correzione consiste nel creare un file ~ / .postgresqlrc che punta alla versione corretta

$ cat ~/.postgresqlrc

9.5 main *

Fatto ciò, pg_restore punta alla versione corretta e il comando passa

Dettagli forniti qui: /server/610777/wrong-version-of-pg-dump-on-ubuntu


3

Ho riscontrato questo problema su pgadmin III ed è stato in grado di risolverlo cambiando la posizione dei binari:

Menu File> Opzioni> Percorsi binari, quindi cambiato "Percorso bin PG" in postgresql / 9.x / bin invece di ProgramFiles / pgadmin. Il ripristino ha funzionato bene in seguito.


2

Stai utilizzando una vecchia versione del file binario pg_restore che non supporta il ripristino del file di dump fornito. Assicurati di utilizzare l'ultima versione di Postgres, che deve essere superiore alla seguente versione: https://www.postgresql.org/about/news/1834/ (10.3, 9.6.8, 9.5.12, 9.4.17 e 9.3.22).

Puoi controllare la versione di pg_restore che stai utilizzando eseguendo pg_restore --version.

Se stai utilizzando uno strumento di terze parti, come PgAdmin, per ripristinare il file di dump fornito, il ripristino potrebbe non riuscire anche con la versione di Postgres installata aggiornata. Ciò è dovuto a strumenti di terze parti che spesso raggruppano le proprie versioni del file binario pg_restore, che potrebbero non essere aggiornate.


0

Stavo riscontrando lo stesso errore. Ho aggiornato localmente postgresql 10.3 e questo ha risolto il problema per me.


-1

Per Windows:

Apri il prompt dei comandi ( cmd), quindi vai alla posizione C:\Program Files\PostgreSQL\9.6\bined esegui questi comandi:

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

Spero che ti possa aiutare


-3

Ho eseguito lo stesso problema 10 minuti fa e ho scoperto questa discussione dal 2005: https://www.postgresql.org/message-id/1106163722.780395.266900%40z14g2000cwz.googlegroups.com

Fondamentalmente il ragazzo sta dicendo che il file di dump è corrotto.


3
Strano. Ho creato un file di dump da heroku e ho avuto lo stesso problema. Questo non è mai successo prima. Ho provato ad aggiornare postgresql dalla 9.6 alla 10 ma non ha funzionato.
Karantan,

1
Sei su 10.2 o 10.3? Devi essere sulla 10.3 ora credo.
Jack Kinsella

Quel thread della mailing list è del 2005. C'è qualcosa di recente cambiato qui che è diverso dal problema in quel thread.
Yetanotherjosh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.