Obtener "[archiver] versión no compatible (1.13) en el encabezado del archivo" cuando se ejecuta pg_restore


165

Acabo de actualizar a postgres 10.2 en mac os que coincide con 10.2 en heroku. Estoy tratando de descargar una copia de la base de datos y restaurarla localmente. Antes de la actualización, la restauración funcionaría bien.

Corro

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

pero recibo este error:

pg_restore: [archiver] versión no compatible (1.13) en el encabezado del archivo

La base de datos parece estar funcionando bien. Es una aplicación de rieles y actualicé las gemas pg. Puedo correr rake db:createy db:migratemuy bien.

Respuestas:


196

Necesita actualizar sus postgres locales para obtener el último parche de seguridad del 01-03-2018, como lo Herokuhizo el 1 de marzo. Es necesario uno de los últimos lanzamientos 10.3, 9.6.8, 9.5.12, 9.4.17, y 9.3.22.

El parche de seguridad se puede encontrar aquí https://www.postgresql.org/about/news/1834/ .

Parece que el parche modificó pg_dump, probablemente es por eso que ya no podemos usar pg_restore sin ese parche para el volcado de Heroku (con el parche aplicado).


87
brew upgrade postgresql brew postgresql-upgrade-database
gerry3

2
Utilizando Linux Mint, mi versión es la 9.5.11 y dice que está actualizada. ¿Cómo lo obligo a usar la última versión usando apt-get?
Kritz

PostgreSQL 9.5.12 está ahora en el Ubuntu 16.04 oficial de repos xenial packages.ubuntu.com/xenial/postgresql-9.5
HarlemSquirrel

66
El comentario de @ gerry3 son dos comandos separados. ¡Cuidado con copiar y pegar!
Joe Masilotti

44
encabezar los dos comandos brew upgrade postgresql && brew postgresql-upgrade-databaserealmente soluciona el problema, pero mis bases de datos locales se cayeron en el camino. ¡Haz una copia de seguridad si tienes datos críticos!
Jarvis Johnson

19

Me encontré con este mismo problema hoy, no sé si algo cambió por parte de Heroku, porque localmente estoy ejecutando 9.6 pero mi base de datos en Heroku es 9.4, por lo que no parece ser sobre la diferencia de puntos de versión ( estuvo trabajando hasta hoy.)

Si está utilizando Postgres.app ( https://postgresapp.com/ ) en una Mac, asegúrese de que esté ejecutando v2.1.3(a partir de este escrito, esa es la versión más nueva). Cuando actualiza Postgres.app, obtiene la versión de parche más reciente de Postgres (lo que probablemente está causando la falta de coincidencia que está experimentando actualmente: Heroku se ha actualizado para el último parche de seguridad y es posible que su máquina local no lo tenga).

Tuve que actualizar Postgres.app de 2.1.0 a 2.1.3 y resolvió el problema.


12

Desde ayer (01/03/2018) también tuvimos problemas para restaurar una copia de seguridad de Heroku que se ejecuta en PostgreSQL 9.5:

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

La actualización de nuestra versión de PostgreSQL de 9.5.11 a 9.5.12 solucionó el problema.


12

La primera vez que tuve este problema, así es como restauré la base de datos Heroku a mi Local:

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

Buena solución, no lo sabía heroku pg:pull. Pero esta no es una solución adecuada, ya que aún no puede restaurar localmente un volcado de heroku anterior, también supongo que utiliza el recurso de base de datos en vivo mientras tira.
demental

1
No estoy seguro de para qué son los votos negativos. OP está literalmente preguntando "Estoy tratando de descargar una copia de la base de datos y restaurarla localmente" y estoy respondiendo esa pregunta específica.
Jim Padilla

7

Para aquellos que intentan actualizar postgresql en Ubuntu sin éxito (como comentó Johan anteriormente), intente usar el repositorio apto de PostgreSQL, como se indica en las instrucciones oficiales de descarga de 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

6

La solución para mí implicó tanto actualizar mi Postgres.app como actualizar mi homebrew local PostgreSQL.

Actualice mi Postgres.app a través de la respuesta de Canuk:

Abra Postgres.app> Buscar actualizaciones ...

Actualice mi homebrew local PostgreSQL a través del comentario de gerry3 sobre la respuesta aceptada:

brew upgrade postgresql brew postgresql-upgrade-database


No tuve que actualizar mi PostgreSQL casero. Solo actualizar Postgres.app a la última versión fue suficiente.
mineralwasser

actualización de postgres.app solucionó mi problema
FutoRicky

6

Tuve este problema en Windows usando pgAdmin 3.

La actualización de pgAdmin 3 a pgAdmin 4 resolvió el problema para mí.

Si está utilizando una herramienta de terceros, como PgAdmin, para restaurar el archivo de volcado proporcionado, la restauración puede no tener éxito incluso con la versión de Postgres instalada actualizada. Esto se debe a que las herramientas de terceros a menudo incluyen sus propias versiones del binario pg_restore, que pueden no estar actualizadas. https://help.heroku.com/YNH1ZJUS/why-am-i-getting-pg_restore-archiver-unsupported-version-1-13-in-file-header-error-with-pg_restore


Gracias, esto funcionó para mí. Estoy en PostgreSQL 9.5.12 y estaba usando pgAdmin 3. pgAdmin 4 pudo funcionar con pg_restoreéxito.
Alexander

5

No recomiendo actualizar su base de datos a una nueva versión principal localmente (aplique parches de seguridad) solo para arreglar esto, ya que desea que coincida con la versión que tenga en producción.

Esto lo arregló en Ubuntu 16.04, restaurando desde una base de datos Heroku.

Primero, asegúrese de tener el repositorio postgresql como se menciona en diego. Luego instale el cliente actualizado.

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

Si usted es Ubuntu 17.04 o 17.10, tenga en cuenta que el repositorio de PostgreSQL no tiene los clientes actualizados que necesita. En su lugar, querrá usar el repositorio xenial de Postgres.


Recomiendo actualizar la base de datos, ya que es un parche de seguridad que es bastante importante si su base de datos ejecuta consultas de usuarios no confiables: wiki.postgresql.org/wiki/… "El propósito de la versión era abordar CVE-2018-1058, que describe cómo un usuario puede crear objetos con nombres similares en diferentes esquemas que pueden cambiar el comportamiento de las consultas de otros usuarios y causar un comportamiento inesperado o malicioso, también conocido como "ataque de caballo de Troya".
RobM

Me sale Unable to locate package postgresql-client-10cuando hago esto
Doug

@RobM De acuerdo. Por "no recomiendo actualizar ..." me refería a no actualizar a una versión principal que no está utilizando en producción. Sin duda, es aconsejable actualizar al último parche de seguridad dentro de una versión principal a nivel local y, por supuesto, en producción. Ajustaré la palabrería en mi respuesta para reflejar mejor mi significado.
Ivan

1
@Doug No olvides agregar primero el repositorio apropiado de postgres. Similar a lo que se describe en este comentario. stackoverflow.com/a/49116272/3975541
Ivan

4

Así es como resolví el problema en Ubuntu (16.04 LTS) donde pg_restore / pg_dump me dio una versión anterior, de psql

$ pg_restore --version
pg_restore (PostgreSQL) 9.4.8

$ psql --version
psql (PostgreSQL) 9.5.14

El problema es que tengo varias versiones de pg instaladas, y pg_restore apuntaba a la versión anterior

$ 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 solución es crear un archivo ~ / .postgresqlrc que apunte a la versión correcta

$ cat ~/.postgresqlrc

9.5 main *

Una vez hecho esto, pg_restore apunta a la versión correcta y el comando pasa por

Detalles dados aquí: /server/610777/wrong-version-of-pg-dump-on-ubuntu


3

Encontré este problema en pgadmin III y pude solucionarlo cambiando la ubicación de los binarios:

Menú Archivo> Opciones> Rutas binarias, luego cambió "PG bin path" a postgresql / 9.x / bin en lugar de ProgramFiles / pgadmin. Restaurar funcionó bien después.


2

Está utilizando una versión anterior del binario pg_restore que no admite la restauración del archivo de volcado proporcionado. Asegúrese de utilizar la última versión de Postgres, que debe ser superior a la siguiente versión: https://www.postgresql.org/about/news/1834/ (10.3, 9.6.8, 9.5.12, 9.4.17 y 9.3.22).

Puede verificar la versión de pg_restore que está utilizando ejecutando pg_restore --version.

Si está utilizando una herramienta de terceros, como PgAdmin, para restaurar el archivo de volcado proporcionado, la restauración puede no tener éxito incluso con la versión de Postgres instalada actualizada. Esto se debe a que las herramientas de terceros a menudo incluyen sus propias versiones del binario pg_restore, que pueden no estar actualizadas.


0

Estaba encontrando el mismo error. Actualicé a postgresql 10.3 localmente, y eso solucionó el problema para mí.


-1

Para ventanas:

Abra el símbolo del sistema ( cmd), luego vaya a la ubicación C:\Program Files\PostgreSQL\9.6\biny ejecute estos comandos:

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

Espero que te ayude


-3

Me encontré con el mismo problema hace 10 minutos y descubrí este hilo desde 2005: https://www.postgresql.org/message-id/1106163722.780395.266900%40z14g2000cwz.googlegroups.com

Básicamente, el tipo dice que el archivo de volcado está dañado.


3
Extraño. Creé un archivo de volcado de heroku y tuve el mismo problema. Esto nunca ha sucedido antes. Intenté actualizar postgresql de 9.6 a 10 pero no funcionó.
karantan

1
¿Estás en 10.2 o 10.3? Tienes que estar en 10.3 ahora, creo.
Jack Kinsella

Ese hilo de la lista de correo es de 2005. Hay algo recientemente cambiado aquí que es diferente del problema en ese hilo.
Yetanotherjosh
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.