PostgreSQL 서버를 모두 설치해야 할 때 pg_dump로“서버 버전 불일치”를 어떻게 해결합니까?


13

내 컴퓨터에 두 개의 PostgreSQL 서버를 설치했습니다. 하나는 9.1이고 다른 하나는 9.3입니다. 두 서버가 모두 설치되어 있어야합니다.

그러나 pg_dump를 실행하면 버전 불일치 오류가 발생합니다.

server version: 9.3.6; pg_dump version: 9.1.15
pg_dump: aborting because of server version mismatch

어떻게 해결할 수 있습니까? (두 버전 중 하나를 제거 할 수 없습니다. 9.1을 먼저 설치하고 몇 달 후에 9.3을 설치했습니다. 데이터베이스 서버 가 모두 설치되어 있어야합니다).


의 9.3 버전을 명시 적으로 실행하십시오 pg_dump. 둘 다 설치되지만 기본값은 하나뿐입니다. 참조 update-alternatives경로에 대한, 또는 dpkg -L그들이 어디에 PostgreSQL의 클라이언트 패키지를 확인합니다. 자신을 보여주기 위해 우분투 상자에 즉시 액세스 할 수 없습니다.
Craig Ringer

할 수 없습니다. pg_dump 명령이 다른 응용 프로그램에서 실행되고 있습니다.
Luis Masuelli

PATH그런 다음 앱이 실행 되는 환경 변수 를 변경해야 합니다.
Craig Ringer

나는 같은 문제가 있었다. PostgreSQL apt 저장소를 통해 설치해야했습니다 : askubuntu.com/a/831293/448857
neoneye

답변:


16

TL; DR : 두 PostgreSQL 인스턴스가 모두 우분투 패키지에 의해 관리되는 경우, --cluster옵션을 사용하여 백업 할 PostgreSQL 인스턴스를 선택하면 해당 버전의 pg_dump가 자동으로 선택됩니다.

pg_dump --cluster 9.1/main [other pg_dump options]

또는

pg_dump --cluster 9.3/main [other pg_dump options].

main기본값 일 뿐이 pg_lsclusters므로 실제 이름을 Cluster열 에서 확인하십시오 .

작동 방식 : Ubuntu 패키지에서 설치 한대로 /usr/bin/pg_dump실제로는 소프트 링크입니다.이 링크 /usr/share/postgresql-common/pg_wrapper의 목적은 정확한 인스턴스를 선택하고 해당 바이너리를 실행하는 것입니다. --cluster스톡 PostgreSQL 명령에 존재하지 않는이 데비안 / 우분투는이 여러 버전 / 여러 경로 문제를 해결하기위한 것입니다.

이에 대해 동일합니다 psql, createdb, createuser, 등 약 18 개 그레스 명령이있는 /usr/bin사실에 의해 관리됩니다 pg_wrapper.

자세한 내용은 man pg_wrapper 를 참조하십시오 .


버전 / 메인은 무엇입니까? 주요 무엇입니까?
Alexander Mills

1
@AlexanderMills : version= 주요 버전의 postgresql 및 main= 기본 클러스터 이름. pg_lsclusters 및 pg_wrapper의 맨 페이지를 참조하십시오.
Daniel Vérité

7

당신이 사용할 수있는:

sudo find / -name pg_dump

pg_dump내 경우에 귀하의 버전을 찾으려면 :/usr/pgsql-9.6/bin/pg_dump

다음으로 우리는 할 수 있습니다 :

sudo ln -sfn /usr/pgsql-9.6/bin/pg_dump /usr/bin/pg_dump

우리가 필요로 업데이트하기 위해

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.