pg_restore를 실행할 때“파일 헤더에서 [아카이버] 지원되지 않는 버전 (1.13)”얻기


165

방금 heros의 10.2와 일치하는 mac os에서 postgres 10.2로 업그레이드했습니다. 데이터베이스 복사본을 다운로드하여 로컬로 복원하려고합니다. 업그레이드하기 전에 복원이 정상적으로 작동합니다.

난 달린다

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

하지만이 오류가 발생합니다.

pg_restore : [archiver] 파일 헤더에서 지원되지 않는 버전 (1.13)

데이터베이스가 정상적으로 작동하는 것 같습니다. Rails 앱이며 pg gem을 업그레이드했습니다. 나는 실행 rake db:create하고 db:migrate잘.

답변:


196

Heroku3 월 1 일과 같이 2018-03-01에서 마지막 보안 패치를 받으려면 로컬 postgres를 업그레이드해야합니다 . 당신은 마지막 릴리스 중 하나가 필요 10.3, 9.6.8, 9.5.12, 9.4.17,와 9.3.22.

보안 패치는 https://www.postgresql.org/about/news/1834/ 에서 찾을 수 있습니다 .

패치가 pg_dump를 수정 한 것 같습니다. 아마도 우리는 Heroku의 덤프 (패치가 적용된)에 해당 패치가 없으면 pg_restore를 더 이상 사용할 수 없습니다.


87
brew upgrade postgresql brew postgresql-upgrade-database
gerry3

2
Linux Mint를 사용하면 내 버전이 9.5.11이며 최신 버전입니다. apt-get을 사용하여 최신 버전을 사용하도록하려면 어떻게해야합니까?
Kritz

Postgresql 9.5.12는 공식 우분투 16.04 xenial repo 패키지에 있습니다
.ubuntu.com

6
@ gerry3의 의견은 두 개의 별도 명령입니다. 복사 및 붙여 넣기에주의하십시오!
Joe Masilotti

4
두 명령을 brew upgrade postgresql && brew postgresql-upgrade-database수행하면 실제로 문제가 해결되지만 로컬 데이터베이스가 중단되었습니다. 중요한 데이터가 있으면 백업하십시오!
Jarvis Johnson

19

나는 오늘이 같은 문제에 부딪쳤다. 나는 로컬에서 9.6을 실행하고 있지만 Heroku의 데이터베이스는 9.4이기 때문에 Heroku 측에서 변경된 것이 있는지 모르겠다. 버전 포인트 차이에 관한 것 같지 않았다. 오늘까지 일하고있었습니다.)

Mac 에서 Postgres.app ( https://postgresapp.com/ )를 사용중인 경우 실행 중인지 확인하십시오 v2.1.3(이 문서가 최신 버전 임). Postgres.app를 업그레이드하면 Postgres의 최신 패치 릴리스가 제공됩니다 (현재 불일치가 발생할 수 있음-Heroku가 최신 보안 패치로 업그레이드하여 로컬 컴퓨터에 없을 수 있음).

Postgres.app를 2.1.0에서 2.1.3으로 업그레이드해야 문제가 해결되었습니다.


12

어제 (2018 년 3 월 1 일) 이후, PostgreSQL 9.5에서 실행되는 Heroku에서 백업을 복원하는 데 문제가있었습니다.

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

PostgreSQL 버전을 9.5.11에서 9.5.12로 업그레이드하면 문제가 해결되었습니다.


12

이 문제가 처음 발생했을 때, Heroku 데이터베이스를 로컬로 복원하는 방법은 다음과 같습니다.

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

좋은 해결책, 나는 몰랐다 heroku pg:pull. 그러나 이전 헤 로쿠 덤프를 로컬로 복원 할 수 없으므로이 수정은 적합하지 않습니다. 또한 당기는 동안 라이브 데이터베이스 리소스를 사용한다고 생각합니다.
demental

1
다운 보트가 무엇인지 확실하지 않습니다. OP는 문자 그대로 "데이터베이스 복사본을 다운로드하여 로컬로 복원하려고합니다"라고 묻고 있으며 특정 질문에 답변하고 있습니다.
Jim Padilla

7

성공하지 않고 우분투에서 postgresql을 업그레이드하려는 경우 (위의 Johan의 의견 참조) 공식 PostgreSQL 다운로드 지침에 명시된대로 PostgreSQL apt 저장소를 사용해보십시오 : 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 업데이트가 모두 포함되었습니다 .

Canuk의 답변을 통해 Postgres.app를 업데이트하십시오.

Postgres.app> 업데이트 확인 ...을 엽니 다.

허용 된 답변에 대한 gerry3의 의견을 통해 내 현지 사제 PostgreSQL을 업데이트하십시오.

brew upgrade postgresql brew postgresql-upgrade-database


집에서 만든 PostgreSQL을 업데이트 할 필요가 없었습니다. Postgres.app를 최신 버전으로 만 업데이트하면 충분합니다.
Mineralwasser

postgres.app에서 업데이트하면 내 문제가 해결되었습니다
FutoRicky

6

pgAdmin 3을 사용하여 Windows에서이 문제가 발생했습니다.

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


고마워, 이것은 나를 위해 일했다. PostgreSQL 9.5.12에 있는데 pgAdmin 3을 사용하고있었습니다 pg_restore. pgAdmin 4는 성공적으로 수행 할 수있었습니다 .
Alexander

5

프로덕션 환경에있는 버전과 일치하도록이 문제를 해결하기 위해 DB를 로컬로 새로운 주 버전으로 업그레이드하지 않는 것이 좋습니다 (보안 패치 적용).

이것은 Heroku 데이터베이스에서 복원하면서 Ubuntu 16.04에서 수정되었습니다.

먼저, diego가 언급 한대로 postgresql 저장소가 있는지 확인하십시오. 그런 다음 업그레이드 된 클라이언트를 설치하십시오.

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

당신은 PostgreSQL을의 강한 풍미의 repo는 않습니다 우분투 17.04 또는 17.10,주의 경우 하지 가 업데이트 된 클라이언트는 당신이 필요합니다. 대신 xenial Postgres 저장소를 사용하려고합니다.


이 데이터베이스가 신뢰할 수없는 사용자로부터 쿼리를 실행하는 경우 매우 중요 보안 패치 이후 내가 DB를 업그레이드 권장합니까 : wiki.postgresql.org/wiki/...을 "릴리스의 목적은 주소 CVE-2,018에서 1,058 사이, 설명이었다 사용자가 다른 스키마에서 유사한 이름의 개체를 만들어 다른 사용자의 쿼리 동작을 변경하고 "트로이 목마"공격이라고도하는 예기치 않은 또는 악의적 인 동작을 유발하는 방법
RobM

내가 얻을 Unable to locate package postgresql-client-10나는이 작업을 수행 할 때
더그

@RobM 합의. "업그레이드를 권장하지 않습니다 ..."라는 말은 프로덕션에서 사용하지 않는 메이저 버전으로 업그레이드하지 않는 것을 말합니다. 물론 메이저 버전 내에서 그리고 물론 프로덕션 환경에서 최신 보안 패치로 업그레이드하는 것이 현명합니다. 나는 내 의미를 더 잘 반영하기 위해 내 대답에서 언어를 조정합니다.
Ivan

1
@Doug 먼저 적절한 postgres 저장소를 추가하는 것을 잊지 마십시오. 이 의견에 설명 된 것과 유사합니다. stackoverflow.com/a/49116272/3975541
Ivan

4

다음은 pg_restore / pg_dump가 psql에서 이전 버전을 제공 한 Ubuntu (16.04 LTS)의 문제를 해결하는 방법입니다

$ 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는 올바른 버전을 가리키고 명령은

여기에 주어진 세부 사항 : /server/610777/wrong-version-of-pg-dump-on-ubuntu


3

pgadmin III 에서이 문제가 발생하여 바이너리 위치를 전환하여 문제를 해결할 수있었습니다.

파일 메뉴> 옵션> 바이너리 경로를 선택한 다음 ProgramFiles / pgadmin 대신 "PG bin path"를 postgresql / 9.x / bin으로 변경했습니다. 나중에 복원이 제대로 작동했습니다.


2

제공된 덤프 파일 복원을 지원하지 않는 이전 버전의 pg_restore 바이너리를 사용하고 있습니다. https://www.postgresql.org/about/news/1834/ (10.3, 9.6.8, 9.5.12, 9.4.17) 보다 높은 최신 Postgres 버전을 사용해야합니다. 및 9.3.22).

pg_restore --version을 실행하여 사용중인 pg_restore 버전을 확인할 수 있습니다.

제공된 덤프 파일을 복원하기 위해 PgAdmin과 같은 타사 도구를 사용하는 경우 설치된 Postgres 버전이 최신 버전 인 경우에도 복원에 실패 할 수 있습니다. 이는 타사 도구가 종종 자체 버전의 pg_restore 바이너리를 번들로 제공하기 때문에 최신이 아닐 수 있습니다.


0

같은 오류가 발생했습니다. 로컬에서 postgresql 10.3으로 업데이트했으며 문제가 해결되었습니다.


-1

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

그것이 당신을 도울 것입니다 희망


-3

나는 10 분 전에 같은 문제를 겪었고 2005 년 부터이 스레드에 대해 알았습니다 : https://www.postgresql.org/message-id/1106163722.780395.266900%40z14g2000cwz.googlegroups.com

기본적으로 그 사람은 덤프 파일이 손상되었다고 말합니다.


3
이상한. heroku에서 덤프 파일을 만들었고 같은 문제가 발생했습니다. 이것은 결코 전에 일어난 적이 없다. postgresql을 9.6에서 10으로 업그레이드하려고 시도했지만 작동하지 않았습니다.
karantan

1
10.2 또는 10.3입니까? 당신은 지금 내가 믿는 10.3에 있어야합니다.
Jack Kinsella

그 메일 링리스트 쓰레드는 2005 년에 나왔습니다. 최근 쓰레드와 다른 이슈가 있습니다.
Yetanotherjosh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.