Debianでのpg_dumpバージョンの不一致


8

Debian Unstable / SidでPostgreSQLを実行しています。私は、現在のバージョン(9.1)の持っているpostgresqlpostgresql-clientpostgresql-client-common(143)がインストールされています。

私が抱えている問題は、実行しようとすることpg_dumpです。私はこのエラーを受け取ります:

pg_dump: server version: 9.1.9; pg_dump version: 9.0.6
pg_dump: aborting because of server version mismatch

新しいバージョンのを入手する方法がわかりませんpg_dump。それはpostgresql-client-commonパッケージからのものであるようで、私はapt-get --reinstallそれで実行しようとしましたが、それは私にpg_dumpの新しいバージョンを取得しませんでした。

これを回避するにはどうすればよいですか?または、の新しいバージョンのパッケージはpg_dumpどこにありますか?


Debian Sidを実行しているので、これはコースの標準であることに気付きましたか?不安定です。何をwhich pg_dump見せてくれるの?それが実際にパッケージ化されたバージョンであり、他のバージョンではないことを確認するだけです。
slm

うん、チェックした。それは見せています/usr/bin/pg_dump、そしてdpkg -S /usr/bin/pg_dump私にくれpostgresql-client-common: /usr/bin/pg_dumpます。
スーパーチーター2013年

私の答えをチェックして、それが役立つかどうかを確認してください。
slm

回答:


3

オプションのカップル。

Postgresサイトから.deb 9.1をダウンロードします

Linuxのダウンロード(Debian)-PostgreSQLというタイトルのこのページをご覧ください。更新された.debをサイトから直接ダウンロードするか、リポジトリに再度ポイントして、次のようなコマンドを実行できます。

apt-get install postgresql-9.1

Debianバックポート

http://backports.debian.org/で特定のバージョンを見つけることができる場合があります。

一般的なバージョンを使用する

PostgreSQLのバイナリビルドをダウンロードして、ホームディレクトリなどにインストールできます/opt

企業向けの事前ビルドの1つをダウンロードする

私はこれらの経験はあまりありませんが、一般的なバージョンに似たものの1つダウンロードして、そのインストールからクライアントを使用できる可能性があります。そのまま、データベースをダンプします。

相互配布パッケージ

あなたはできるパッケージダウンロードし、彼らしているディストリビューションに依存しないように構築されています。9.1.9バージョンをダウンロードしたところ、pg_dumpツールが含まれています。

ソフトウェアは.rpmまたは.debとして提供され、にインストールされ/opt/postgres/9.1ます。具体的には、pg_dumpツールは次のとおり/opt/postgres/9.1/bin/pg_dumpです。


PostgreSQLのバージョンは実際には問題ではありません。それはpg_dump古くて互換性のないバージョンです。特にそれを見つけることができる場所はありますか?
スーパーチーター2013年

これらのパッケージにバンドルされていると思います。特定のバージョンの事前ビルドの1つをダウンロードpg_dumpして、そこからコマンドを使用します。インストールする必要はなく、ディレクトリに展開するだけです。ライブラリー・ディレクトリーを指すように環境変数を設定する必要があるかもしれませんが、それはかなり簡単なはずです。
slm

4

別のオプションは、あなたに適しているかもしれませんが、古い並列バージョンをアンインストールすることです:

debian / ubuntuの場合:

sudo apt-get remove postgresql-8.4
sudo apt-get remove postgresql-client-8.4

これにより、古いバージョンのクライアントとサーバーのライブラリのみが削除され、新しいバージョン(9.1など)が保持されます。


4

私の場合、旧バージョンのPostgresql 8.4で実行されているデータベースとバージョン9.1で実行されているデータベースの2つのセットがありました。私がしたことpg_dumpは、locate以下のコマンドを使用してLinuxマシンで見つけることでした

$ locate pg_dump

/usr/bin/pg_dump
/usr/bin/pg_dumpall
/usr/lib/postgresql/8.4/bin/pg_dump
/usr/lib/postgresql/8.4/bin/pg_dumpall
/usr/lib/postgresql/9.1/bin/pg_dump
/usr/lib/postgresql/9.1/bin/pg_dumpall

デフォルト/usr/bin/pg_dumpはPostgresqlバージョン8.4用なので、/usr/lib/postgresql/9.1/bin/pg_dump別のポートで実行されている9.1データベースからダンプするときにコマンドラインから指定しただけで機能しました。

$ /usr/lib/postgresql/9.1/bin/pg_dump -p 5434

2

上記の回答に加えpg_dumpて、clusterオプションを使用してどのバージョンを使用するかを指示することができます。例えば、

$pg_dump --cluster 9.1/main

9.1バージョンをターゲットにします。

これは、Ubuntu(Debian)にpg_wrapper付属しpostgresql-commonて動作するを使用することに注意してください。また、クラスター(例)は設定によって異なる場合があることに注意してください。main

詳細についてはpg_wrapper、このDBAの回答を参照してください


0

私は今日同じ問題に出くわしました、そして、エリックの答えは最も正確であるようです。問題は、postgresql-clientのバージョンが異なり、pg_dumpが最も古いクライアントを使用している可能性があります。

彼が説明したようにフルパスを使用することでこれを解決できますが、私はpostgresql-client-commonパッケージ(すべてのクライアントを削除する)を削除してからpostgresql-client-9.3を再インストールする方が簡単な解決策を見つけました。これにより、おそらく必要な最新バージョンのpg_dumpのみが残ります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.