postgresql - postgres - Obtener "[archiver] versión no compatible(1.13) en el encabezado del archivo" cuando se ejecuta pg_restore
restore backup postgresql heroku (14)
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 ejecutar
rake db:create
y
db:migrate
muy bien.
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í: https://serverfault.com/questions/610777/wrong-version-of-pg-dump-on-ubuntu
Debe actualizar sus postgres locales para obtener el último parche de seguridad del 01-03-2018, como lo hizo
Heroku
el 1 de marzo.
Necesita una de las últimas versiones
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).
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.
Encontré este problema en pgadmin III y pude solucionarlo cambiando la ubicación de los binarios:
Menú Archivo> Opciones> Rutas binarias, luego cambió "Ruta bin bin" a postgresql / 9.x / bin en lugar de ProgramFiles / pgadmin. Restaurar funcionó bien después.
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.
Estaba encontrando el mismo error. Actualicé a postgresql 10.3 localmente, y eso solucionó el problema para mí.
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>
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:
Actualice mi postgreSQL local de cerveza casera a través del comentario de gerry3 sobre la respuesta aceptada:
brew upgrade postgresql
brew postgresql-upgrade-database
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.
Me encontré con este mismo problema hoy, no sé si algo cambió en el lado 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 punto de versión ( estuvo trabajando hasta hoy.)
Si está utilizando Postgres.app (
https://postgresapp.com/
) en una Mac, asegúrese de estar 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 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.
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 solucionó 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 tiene 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á utilizar el repositorio xenial de Postgres.
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
Para ventanas:
Abra el símbolo del sistema (
cmd
), luego vaya a la ubicación
C:/Program Files/PostgreSQL/9.6/bin
y 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
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