Получение "[архиватор] неподдерживаемой версии (1.13) в заголовке файла" при запуске pg_restore

Я просто обновился до postgres 10.2 на mac os, который соответствует 10.2 на героку. Я пытаюсь загрузить копию базы данных и восстановить ее локально. Перед обновлением восстановление будет работать нормально.

я бегу

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

но я получаю эту ошибку:

pg_restore: [архиватор] неподдерживаемая версия (1.13) в заголовке файла

Кажется, что база данных работает нормально. Это приложение для рельсов, и я обновил pg gems. Я могу запустить rake db:create и db:migrate просто отлично.

Ответ 1

Вам нужно обновить локальные postgres, чтобы получить последний патч безопасности с 2018-03-01, например, Heroku сделал 1-й марш. Вам нужен один из последних выпусков 10.3, 9.6.8, 9.5.12, 9.4.17 и 9.3.22.

Патч безопасности можно найти здесь https://www.postgresql.org/about/news/1834/.

Похоже, патч изменен pg_dump, возможно, поэтому мы не можем использовать pg_restore без этого патча для дампа Heroku (с применением патча).

Ответ 2

Сегодня я столкнулся с этой проблемой, я не знаю, изменилось ли что-то на стороне Heroku, потому что локально я использую 9.6, но моя база данных на Heroku составляет 9.4, поэтому, похоже, это не разница в версии (это работал до сегодняшнего дня.)

Если вы используете Postgres.app(https://postgresapp.com/) на Mac, убедитесь, что вы используете v2.1.3 (v2.1.3 с этой записи, это новейшая версия). Когда вы обновляете Postgres.app, вы получаете новейший выпуск исправлений Postgres (что, скорее всего, вызывает несоответствие, которое вы в настоящее время испытываете), Heroku обновился для последнего исправления безопасности, и на вашем локальном компьютере может не быть этого).

Мне пришлось обновить Postgres.app с 2.1.0 до 2.1.3, и это решило проблему.

Ответ 3

Со вчерашнего дня (03/01/2018) у нас также возникли проблемы с восстановлением резервной копии из Heroku, работающей на PostgreSQL 9.5:

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

Обновление нашей версии PostgreSQL с 9.5.11 по 9.5.12 устранило проблему.

Ответ 4

Впервые у меня была эта проблема, вот как я восстановил базу данных Heroku для своего локального:

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

Ответ 5

Для тех, кто пытается обновить postgresql в Ubuntu без успеха (например, Johan прокомментировал выше), попробуйте использовать репозиторий APT PostgreSQL, как указано в официальных инструкциях по загрузке 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

Исправление для меня включало как обновление моего Postgres.app, так и обновление моего локального почтового PostgreSQL.

Обновите мой Postgres.app через ответ Canuk:

Открыть Postgres.app> Проверить наличие обновлений...

Обновите мой локальный почтовый PostgreSQL через gerry3 комментарий к принятому ответу:

brew upgrade postgresql brew postgresql-upgrade-database

Ответ 7

Я не рекомендую обновлять вашу БД до новой крупной версии локально (применяйте исправления безопасности), чтобы исправить это, так как вы хотите, чтобы это соответствовало любой версии, которую вы имеете на производстве.

Это было исправлено на Ubuntu 16.04, восстановление из базы данных Heroku.

Во-первых, убедитесь, что у вас есть postgresql repo, как упомянуто Diego. Затем установите обновленный клиент.

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

Если вы Ubuntu 17,04 или 17,10, обратите внимание, что пикантный репо PostgreSQL не имеет обновленный клиент вам нужно. Вместо этого вы захотите использовать репозиторий xenial Postgres.

Ответ 8

Была ли эта проблема в Windows с помощью pgAdmin 3.

Обновление с 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

Ответ 9

Я столкнулся с этой проблемой на pgadmin III и смог ее исправить, переключив расположение двоичных файлов:

Меню Файл> Параметры> Двоичные пути, затем изменил "PG bin path" на postgresql/9.x/bin вместо ProgramFiles/pgadmin. Восстановление работало нормально после этого.

Ответ 10

Вы используете старую версию двоичного файла 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, которую используете, запустив pg_restore --version.

Если вы используете сторонний инструмент, такой как PgAdmin, для восстановления предоставленного файла дампа, восстановление может не сработать даже при установленной обновленной версии Postgres. Это связано с тем, что сторонние инструменты часто связывают свои версии двоичного файла pg_restore, которые могут быть неактуальными.

Ответ 11

Вот как я решил проблему на 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

Ответ 12

Я столкнулся с той же ошибкой. Я обновился до postgresql 10.3 локально, и это устранило проблему для меня.

Ответ 13

Для Windows:

Откройте командную строку (cmd), затем перейдите в папку C:\Program Files\PostgreSQL\9.6\bin и выполните следующие команды:

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

Надеюсь, это поможет вам