Я просто обновился до 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
просто отлично.
Вам нужно обновить локальные 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 (с применением патча).
Сегодня я столкнулся с этой проблемой, я не знаю, изменилось ли что-то на стороне 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, и это решило проблему.
Со вчерашнего дня (03/01/2018) у нас также возникли проблемы с восстановлением резервной копии из Heroku, работающей на PostgreSQL 9.5:
pg_restore: [archiver] unsupported version (1.13) in file header
Обновление нашей версии PostgreSQL с 9.5.11 по 9.5.12 устранило проблему.
Впервые у меня была эта проблема, вот как я восстановил базу данных Heroku для своего локального:
$ rails db:drop
$ heroku pg:pull DATABASE_URL <insert local DB name> --app <app-name>
heroku pg:pull
обходной путь, я не знал про heroku pg:pull
. Но это не подходящее решение, так как вы все еще не можете локально восстановить предыдущий дамп heroku, также я думаю, что при извлечении используется ресурс живой базы данных.
Для тех, кто пытается обновить 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
Исправление для меня включало как обновление моего Postgres.app, так и обновление моего локального почтового PostgreSQL.
Обновите мой Postgres.app через ответ Canuk:
Обновите мой локальный почтовый PostgreSQL через gerry3 комментарий к принятому ответу:
brew upgrade postgresql
brew postgresql-upgrade-database
Я не рекомендую обновлять вашу БД до новой крупной версии локально (применяйте исправления безопасности), чтобы исправить это, так как вы хотите, чтобы это соответствовало любой версии, которую вы имеете на производстве.
Это было исправлено на 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.
Unable to locate package postgresql-client-10
когда я делаю это
Была ли эта проблема в 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
pg_restore
.
Вот как я решил проблему на 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
Вы используете старую версию двоичного файла 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, которые могут быть неактуальными.
Я столкнулся с той же ошибкой. Я обновился до postgresql 10.3 локально, и это устранило проблему для меня.
Я столкнулся с тем же вопросом 10 минут назад и узнал об этой теме с 2005 года: https://www.postgresql.org/message-id/1106163722.780395.266900%40z14g2000cwz.googlegroups.com
В основном парень говорит, что файл дампа поврежден.
brew upgrade postgresql
brew postgresql-upgrade-database