Postgresql 9.2のpg_dumpバージョンの不一致


141

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をアップグレードするにはどうすればよいですか?


回答:


27

PostgreSQL 9.2.1をpg_dumpクライアントマシンにインストールするか$PGHOME、PostgreSQLサーバーマシンからクライアントマシンに単にコピーすることができます。initdbクライアントマシンで新しいクラスターを作成する必要はありません。

9.2.1ソフトウェアのインストールが完了したら、必ず.bash_profileファイル内のいくつかの環境変数を編集してください。


75

UbuntuでHerokuを使用しているときにこの問題が発生しました。修正方法は次のとおりです。

  1. Linuxダウンロード(Ubuntu) 」の説明に従って、PostgreSQL aptリポジトリを追加します。(他のオペレーティングシステムにも同様のページがあります。)

  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/...


これは、PostgreSQLをアップグレードした場合にのみ発生します。私はOSの新規インストールを行っただけで問題はありませんでした。
Seth

不思議に思う人のために、このソリューションはHeroku以外のUbuntuにも適用されます。
IanBussieres 2014

2
この回答で述べられていることによると、それもかなり悪い考えです。
アーサー

その答えは、フォルダを削除してソフトウェアを削除することを推奨しています。ここでは、シンボリックリンクを再作成しています。
Seth

2
パーフェクト!postgresのアップグレード後にシンボリックリンクを
再作成する

61
  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. 2つのバージョンがインストールされています。pg_dumpを新しいバージョンで更新するには:

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

これにより、新しいバージョンへのシンボリックリンクが作成されます。


2
私が使用しているバージョンを見つける方がはるかに速かったlocate pg_dump
Obromios

1
IMO、2>/dev/nullコンソールに出力するのではなく、ERRORストリームをスローするため、追加しないでください。まれなケースを除いて、発生しているエラーを確認する必要があると思います。たとえば、私の場合、私はrootではなかったので、新しいpg_dumpバージョンがインストールされているディレクトリの一部を表示できなかったことを思い出します。一般に、エラーは削除しないでください。
Poutrathor

40

Macには、/usr/bin/pg_dumpデフォルトで使用される組み込みコマンドがあります。

postgresqlをインストールすると、別のバイナリが取得されます /Library/PostgreSQL/<version>/bin/pg_dump


3
場所はPostgreSQLのインストール方法(EnterpriseDBインストーラー、MacPorts、Homebrewなど)によって異なりますが、答えの要点-ユーザーがおそらく正しいバージョンを既にインストールしている-は間違いなく正しいです。
クレイグリンガー

3
私の場合、.bash_profileを開いて「export PATH = / Applications / Postgres.app / contents / macos / bin:$ PATH」を追加するのが魔法のようでした。
Alex Weber

29

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

1
CentOSユーザー(私のバージョンは6.9 Finalです):sudo /usr/pgsql-<version>/bin/pg_dump <database-name> -U <username> -h localhost
Davidson Lima

@ jDub9ダンプを取るときにどのバージョンを使用しましたか?同じものを使用していることを確認してください
Deepak Mahakale

16

Ubuntuを使用している場合は、古いバージョンのがpostgresql-clientインストールされている可能性があります。エラーメッセージのバージョンに基づいて、解決策は次のようになります。

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

11

新しいバージョンのPostgreSQLをアップグレードまたは再インストールするたびに、最新バージョンの pg_dump がインストールされます。

PostgreSQL/bin システムのどこかに、インストールした最新バージョンのPostgreSQL(9.2.1が最新)の下にディレクトリが必要 pg_dump です。そこからを実行してみてください 。


10
ヒント:Terminal.appfind / -name pg_dump -type f 2>/dev/null
Craig Ringer

8

Postgres.appを 実行している場合:

  1. 次のコードをに追加します.bash_profile

    export PATH=/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH
  2. 端末を再起動します。


7

Homebrewを搭載したMacの場合。Herokuからデータベースを取得するときにこの問題が発生しました。私はそれを実行するだけで修正しました:

brew upgrade postgresql



3

説明したように、これはあなたのpostgresqlが古いバージョンにあるためです->それをhomebrew経由で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

エラーが発生した場合は、各ステップでbrewの指示を読み、それに従うことを忘れないでください。

詳細はこちらをご覧くださいhttps : //github.com/petere/homebrew-postgresql


3

他の誰もカバーしていないと私が思う別の答え。

(私と同じように)複数のPGクラスターがインストールされている場合は、を使用してそれらを表示できますpg_lsclusters

表示されたリストからバージョンとクラスターを確認できるはずです。

そこから、これを行うことができます:

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

明らかに、バージョンとクラスター名をpg_lsclusters/で区切って返されるものから、バージョンとクラスター名を状況に応じた適切な名前に置き換えます。これは、実行したい特定のクラスターをターゲットにします。


1
これは非常に便利です。私が混乱したのは、なぜpg_dumpクラスターの1つで機能していないのかです。結局のところ、クラスタの1つが新しいバージョンにアップグレードされたとき、デフォルトのPostgresqlバージョンを使用していました。クラスターを指定して問題を解決しました。
Andrius

3

私にとっての問題は、更新psql apt-get後も、新しいバージョンが解決されないことでしたupdate。以下はうまくいきました。

Ubuntu

PostgreSQLパッケージのGPGキーのインポートから始めます。

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'

UbuntuにPostgreSQLをインストールする

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

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


1
これはコンピューター上の既存の実行可能ファイルを置き換えないため、/ usr / lib / postgresql / 9.6 / bin / pg_dumpなどの新しいバージョンのpg_dumpを明示的に使用するか、// usr / binなどの新しいショートカットを作成する必要があります。 / pg_dump96
vinh

私はそれをピックアップした新しいものを明示的に使用する必要はありませんでした。
rado

2

Dockerがインストールされている場合は、次のようなことができます。

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

Postgres 9.2を含むDockerコンテナーをダウンロードし、コンテナーpg_dump内で実行して、出力を書き込みます。


2

答えはばかげているように聞こえますが、上記のエラーが発生し、以前のバージョンのpg_dumpを実行したい場合は、postgresのbinディレクトリに移動して、次のように入力します。

./pg_dump servername> out.sql ./ルートを無視し、現在のディレクトリでpg_dumpを探します


2

私は同じエラーがあり、これが私の場合それを解決した方法です。つまり、postgresqlのバージョンは9.2.1ですが、9.1.6のpostgresqlサービスを開始しています。

実行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して、postgresのステータスを確認することもできます。


1

**インストール後、postgresのバージョンはmatch(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 database



1

データベースが別のマシンにインストールされている場合、おそらく正しいバージョンのpg_dumpがインストールされています。これは、SSHを使用してpg_dumpコマンドをリモートで実行できることを意味します。 ssh username@dbserver pg_dump books > books.out

パスワードなしで実行するために公開鍵認証を使用することもできます。それを達成するためのステップ:

  1. ssh-keygenコマンドを使用して、鍵のペアを生成します(まだ完了していない場合)。
  2. 公開鍵をデータベースサーバー(通常は〜/ .ssh / authorized_keys)にコピーします。
  3. 接続がsshコマンドで機能するかどうかをテストします。

1

2つのpostgressバージョンがインストールされているので、同じ問題が発生しました。

適切なpg_dumpを使用するだけで、あなたの場合、何も変更する必要はありません。

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

0

HerokuのPostgres.appを使用している場合、pg_dumpは(他のすべてのバイナリとともに) /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/.

それらをすべてつかむために


0

Macの場合find / -name pg_dump -type f 2>/dev/nullは、pg_dumpの場所を見つけます

私にとって、私は以下の結果を持っています:

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_dumppg_dumpターミナルで置き換える

例えば:

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

わたしにはできる!


0

ここから適切なpostgresバージョンをダウンロードします。

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

以下のコマンドを必ずsudoとして実行してください(postgresql.org/download URLは、使用する特定のURLを生成します。以下で使用するものは、centos 7の例です)。

sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install postgresql11-server

これでpg_dumpバージョンが更新されました。pg_dump-Vで確認してください


-6

Fedora 17のインストールでも同様の問題が発生しました。これは問題を回避するために私がやったことです

  • 組み込みpg_dumpを削除します/usr/bin/pg_dump(ルートとして: "rm / usr / bin / pg_dump")
  • 次に、postgresqlインストールのシンボリックリンクを作成します。

    再びルートとして ln -s /usr/pgsql-9.2/bin/pg_dump /usr/bin/pg_dump

それでうまくいくはずです


9
Nonono、パッケージ管理ファイルを削除しないでください!それは中にいた場合は/usr/(というよりも/usr/local//home/または/opt/、物事を削除することは一般的にOKです)あなたは本当にパッケージマネージャを使用する必要がある- rpmyumたりdpkgapt-getaptitude、ディストリビューションによっては、。新しいバージョンが最初に見つかるように、パッケージをアンインストールするかrpmPATH環境変数を変更してください.bash_profile。パッケージ管理下にあるものに疑問がある場合は、rpm -qf /path/to/file(RPM)またはdpkg -S /path/to/file(dpkg)を使用してください
Craig Ringer
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.