programing

Postgresql 9.2pg_dump 버전 불일치

powerit 2023. 5. 3. 21:58
반응형

Postgresql 9.2pg_dump 버전 불일치

pg_dump 도구를 사용하여 Postgresql 데이터베이스를 덤프하려고 합니다.

$ pg_dump books > books.out

그러나 이 오류가 발생하고 있습니다.

pg_dump: server version: 9.2.1; pg_dump version: 9.1.6
pg_dump: aborting because of server version mismatch

--ignore-version이제 옵션은 더 이상 사용되지 않으며 효과가 있었다고 해도 제 문제에 대한 해결책이 되지 않을 것입니다.

pg_dump를 업그레이드하여 이 문제를 해결하려면 어떻게 해야 합니까?

  1. 설치된 버전의 pg_dump를 확인합니다.

    find / -name pg_dump -type f 2>/dev/null
    
  2. 제 출력은 다음과 같습니다.

    /usr/pgsql-9.3/bin/pg_dump
    /usr/bin/pg_dump
    
  3. 두 가지 버전이 설치되어 있습니다.pg_dump를 최신 버전으로 업데이트하려면:

    sudo ln -s /usr/pgsql-9.3/bin/pg_dump /usr/bin/pg_dump --force
    

새 버전에 대한 심볼 링크가 생성됩니다.

Ubuntu에서 Heroku를 사용하는 동안 이 문제가 발생했습니다. 수정 방법은 다음과 같습니다.

  1. Postgre 추가"Linux downloads (Ubuntu)"에 설명된 SQLapt 저장소(다른 운영 체제의 경우 유사한 페이지가 있음)

  2. 다음을 사용하여 최신 버전(나의 경우 9.3)으로 업그레이드:

    sudo apt-get install postgresql
    
  3. 기링크재에서 를 다시 ./usr/bin매개 변수:

    sudo ln -s /usr/lib/postgresql/9.3/bin/pg_dump /usr/bin/pg_dump --force
    

    에 있는 입니다./usr/lib/postgresql/...는 위의경다일야합니다해치음과와 .server version수신한 오류 번호입니다.그래서 당신의 실수가 말해준다면,pg_dump: server version: 9.9링크를 클릭합니다./usr/lib/postgresql/9.9/....

에는 Mac이 ./usr/bin/pg_dump기본값으로 사용되는 명령입니다.

하면 postgresql에서 다른 파일을 수 ./Library/PostgreSQL/<version>/bin/pg_dump

위치를 확인할 수 있습니다.pg_dump 명령의 합니다.

locate pg_dump

/usr/bin/pg_dump
/usr/bin/pg_dumpall
/usr/lib/postgresql/9.3/bin/pg_dump
/usr/lib/postgresql/9.3/bin/pg_dumpall
/usr/lib/postgresql/9.6/bin/pg_dump
/usr/lib/postgresql/9.6/bin/pg_dumpall

이제 명령에서 원하는 버전의 경로를 사용합니다.

/usr/lib/postgresql/9.6/bin/pg_dump books > books.out

PostgrePostgre를 설치할 수 . 9.2.1 9pg_dump만 하면 .$PGHOME▁the▁.SQL 서버 시스템에서 클라이언트 시스템으로.다음 작업을 수행할 필요가 없습니다.initdb클라이언트 시스템의 새 클러스터.

한 후에는 9.2.1의 변수를 ..bash_profilejava.

Ubuntu에의 Ubuntu가 수 .postgresql-client으로 해결 과 같습니다.오류 메시지의 버전에 따라 해결 방법은 다음과 같습니다.

sudo apt-get remove postgresql-client-9.1
sudo apt-get install postgresql-client-9.2

도커가 설치된 경우 다음과 같은 작업을 수행할 수 있습니다.

$ docker run postgres:9.2 pg_dump books > books.out

9 있는 하여 Postgres 9.2를 실행합니다.pg_dump용기 내부에 입력하고 출력을 기록합니다.

Ubuntu에서 최신 Apt 저장소를 추가하고 다음을 실행하기만 하면 됩니다.

sudo apt-get install postgresql-client-11

PostgrePostgre마다 최신 PostgrePostgre SQL됩니다. pg_dump 가 설치되어 있습니다.

분명히 있을 것입니다. PostgreSQL/bin Postgre 스템의최 Postgre을최있는 SQL의 ( 버전)에서한 후 SQL(9.2.1 최신 버전)을해 보십시오. pg_dump 그 안에서.

Postgres.app을 실행하는 경우:

  1. 합니다..bash_profile:

    export PATH=/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH
    
  2. 터미널을 다시 시작합니다.

홈브루가 있는 Mac용.Heroku에서 db를 가져올 때 문제가 발생했습니다.실행 중인 상태에서 수정했습니다.

brew upgrade postgresql

Mac 사용자의 경우 .profile 파일의 맨 위에 배치합니다.

export PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"

그 다음에 달려라

. ~/.profile

다른 사람이 다루지 않은 것 같은 대체 답변입니다.

(개의 경우에는 (으)로 클러스터로 볼 수.pg_lsclusters.

표시된 목록에서 버전 및 클러스터를 볼 수 있어야 합니다.

여기서 다음 작업을 수행할 수 있습니다.

pg_dump --cluster=9.6/main books > books.out

반환되는 것에서 .pg_lsclusters로 합니다.실행하려는 특정 클러스터를 대상으로 합니다.

나에게 있어 이 문제는 업데이트 중이었습니다.psql apt-get최신 버전을 확인하지 않았습니다.update다음은 효과가 있었습니다.

우분투

Postgre용 GPG 키 가져오기부터 시작합니다.SQL 패키지.

sudo apt-get install wget ca-certificates
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

이제 시스템에 리포지토리를 추가합니다.

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'

Postgre 설치Ubuntu의 SQL

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

https://www.postgresql.org/download/linux/ubuntu/

설명한 대로, 이것은 당신의 postgresql이 이전 버전이기 때문입니다 -> 홈브루를 통해 Mac용으로 업데이트:

brew tap petere/postgresql,

brew install <formula> (예:)brew install petere/postgresql/postgresql-9.6)

이전 postgre 제거:

brew unlink postgresql

brew link -f postgresql-9.6

오류가 발생할 경우 각 단계의 양조 지침을 읽고 따르는 것을 잊지 마십시오.

자세한 내용은 https://github.com/petere/homebrew-postgresql 을 참조하십시오.

이것은 위와 다른 사이트의 솔루션 모음인 저에게 효과가 있었습니다.이전에 postgressql-client-11과 같은 버전을 지정한 경우 먼저 해당 버전을 제거해야 합니다.

sudo apt-get remove -y postgresql-client
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install -y postgresql-client-12

대답은 바보 같지만 위의 오류가 발생하고 이전 버전에 대해 pg_dump를 실행하려면 postgres의 bin 디렉토리로 이동하고 입력합니다.

./pg_sql servername > out.sql ./ 루트를 무시하고 현재 디렉터리에서 pg_dll을 찾습니다.

저도 같은 오류가 있었고 제 경우에는 이렇게 해결했습니다.즉, postgresql 버전이 9.2.1이지만 postgresql 서비스 9.1.6을 시작했습니다.

실행하는 경우psql postgres다음과 같이 표시됩니다.

psql (9.2.1, server 9.1.6)

이 문제를 해결하기 위해 제가 한 일은 다음과 같습니다.

  1. brew services stop postgresql@9.1.6
  2. brew services restart postgresql@9.2.1

지금실을 실행합니다.psql postgres그리고 당신은 다음과 같이 해야 합니다.psql (9.2.1)

실행할 수도 있습니다.brew services list게시물의 상태를 확인합니다.

저도 같은 문제에 직면해 있었습니다.pg_dump 업그레이드 대신 도커를 사용했습니다.

다음 명령을 실행하여 Postgres 14.2 또는 원하는 다른 버전의 도커 컨테이너를 만듭니다.

sudo docker run --name mac_postgres -p 5444:5432 -e POSTGRES_PASSWORD=password -d postgres:14.2

그런 다음 다음 명령을 사용하여 덤프를 실행합니다.참고: 실제 데이터베이스 자격 증명에 따라 호스트, 포트, 사용자 이름 및 암호를 변경해야 합니다.

sudo docker exec -it  mac_postgres  pg_dump --host=xxxxx0.b.db.ondigitalocean.com --port=250xx --username=doadmin --dbname=test --password > out.sql

암호를 입력한 후.덤프가 out.sql 파일로 준비됩니다.그런 다음 도커 컨테이너를 삭제할 수 있습니다.

sudo docker stop mac_postgres
sudo docker rm mac_postgres

Heroku바이너리와 는 Heroku의 Postgres.app에 ./Applications/Postgres.app/Contents/MacOS/bin/

그래서 그 경우에는.

ln -s /Applications/Postgres.app/Contents/MacOS/bin/pg_dump /usr/local/bin/pg_dump

또는

ln -s /Applications/Postgres.app/Contents/MacOS/bin/* /usr/local/bin/.

그냥 다 잡기 위해서는

설치 후 postgres 버전이 일치합니다(9.2) 심볼릭 링크 또는 새 바로 가기 만들기

'/usr/bin'에

syntag is = sudo ln -s [path for use] [new shortcut name]

sudo ln -s /usr/lib/postgresql/9.2/bin/pg_dump new_pg_dump

호출 방법: new_pg_dump -h 192.168.9.88 -U postgres 데이터베이스

시도:

export PATH=/usr/local/bin:$PATH

데이터베이스가 다른 시스템에 설치된 경우에는 올바른 버전의 pg_dump가 설치되어 있을 수 있습니다. SSH: 즉, SSH를 사용하여 할 수 .ssh username@dbserver pg_dump books > books.out

또한 비밀번호 없는 실행에 공용 키 인증확인을 사용할 수 있습니다.이를 위한 단계:

  1. ssh-keygen 명령을 사용하여 키 쌍을 생성합니다(아직 생성되지 않은 경우).
  2. 공용 키를 데이터베이스 서버(일반적으로 ~/.ssh/authorized_keys)에 복사합니다.
  3. 연결이 ssh 명령으로 작동하는지 테스트합니다.

저는 두 개의 후속 버전이 설치되어 있는 것과 같은 문제가 있었습니다.

적절한 pg_dump를 사용하기만 하면 다음과 같은 경우에는 아무것도 변경할 필요가 없습니다.

 $> /usr/lib/postgresql/9.2/bin/pg_dump books > books.out

Mac의 사, 용을 합니다.find / -name pg_dump -type f 2>/dev/null

저는 다음과 같은 결과를 얻었습니다.

Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump
/usr/local/Cellar/postgresql/9.4.5_2/bin/pg_dump

사용하지 않으려는 경우sudo ln -s new_pg_dump old_pg_dump --force그냥 사용:

Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump pg_dump의 터미널에서.

예:

Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump books > books.out

나에게는 그게 효과가 있어요!

가 업그레이드되었습니다.postgresql-client-xx내 사건을 해결하기에 충분했습니다.

참조 웹 페이지 : https://www.postgresql.org/download/linux/ubuntu/

sudo apt-get update && sudo apt-get -y upgrade postgresql-client

한 가지 흥미로운 점은 업그레이드 후 이전 버전이 설치된 상태로 유지된다는 점입니다.

mlazo@mlazo-pc:~$ dpkg -l |grep -i postgresql-client
ii  postgresql-client-11                                             11.8-1.pgdg18.04+1                                  amd64        front-end programs for PostgreSQL 11
ii  postgresql-client-12                                             12.4-1.pgdg18.04+1                                  amd64        front-end programs for PostgreSQL 12

나의 경험이 누군가에게 도움이 되길 바랍니다.

인사말,

저는 다음 사항을 조정해야 한다는 것과 같은 메시지를 받았습니다.

export LD_LIBRARY_PATH=/usr/pgsql-12/lib:....
export LD_RUN_PATH=/usr/pgsql-12/lib:.....

첫 번째 단계: postgres에 OS용으로 원하는 버전의 바이너리가 미리 구축된 저장소가 있는지 확인합니다. https://www.postgresql.org/download/

이 방법이 작동하지 않는 경우(예: 디스트리뷰터가 있지만 더 이상 지원되지 않아 올바른 바이너리가 제공되지 않는 경우) 또는 원격 레포를 추가할 걱정 없이 바로 사용하거나 소스만 사용하려는 경우 등).

제가 한 일은 원하는 버전의 게시물의 원시 소스를 다운로드한 입니다.

을 풀고,, 그것을 , CD를, 그리고 를넣고만다../configure && make그러면:

postgresql-12.3 $ find . -name pg_dump
./src/bin/pg_dump/pg_dump
$ ./src/bin/pg_dump/pg_dump


unable to load libpg.so.5 # if it says this...
$ find . -name libpg.so.5
$ export LD_LIBRARY_PATH=/your/path/to/the/shared/dir/of/above/file

$ ./src/bin/pg_dump/pg_dump # works now

이제 상자에 포함된 모든 버전에 액세스할 수 있습니다.어떤 것이든 좋습니다.

전체 단계 자습서

로컬 버전은 원격 서버의 AWS에서 사용하는 버전과 일치해야 합니다.안타깝게도 apt-get 설치는 정식 릴리스보다 뒤처질 것입니다.

따라서 다음과 같은 방법으로 진행해야 합니다.

sudo apt-get remove postgresql
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

그런 다음 오류 메시지가 다음과 같아야 합니다.

pg_dump: server version: 12.3; pg_dump version: 10.16 (Ubuntu 10.16-0ubuntu0.18.04.1)

따라서 새로 설치하는 동안 버전 번호(부차 없이)를 지정하여 일치하는 버전을 설치하려면 버전 12(13이 아닌)를 사용해야 합니다.

sudo apt-get -y install postgresql-12

이제 작동합니다.


pg_dump -h {{endpoint}} -U {{username}} -f dump.sql {{tablename}}

NB: Connectivity & Security에서 엔드포인트를 얻고 https://us-east-2.console.aws.amazon.com/rds/home?region=us-east-2 으로 이동하여 DB 인스턴스를 클릭합니다.

"공식" postgresql repo가 있는 Ubuntu 20.04의 경우 12페이지에서 13페이지로 이동해야 했습니다.

sudo apt purge postgresql-12

이것은 제가 정확히 파악하기 매우 어려웠습니다.저는 다음과 같은 다양한 패키지를 가지고 놀았습니다.

  • postgresql-client
  • postgresql-client-common
  • postgresql-##
  • postgresql-client-##
  • postgresql-server-dev-##
  • pgadmin

언급URL : https://stackoverflow.com/questions/12836312/postgresql-9-2-pg-dump-version-mismatch

반응형