ログ日記

作業ログと日記とメモ

psqlで複数バージョンを使い分ける

Debianで複数バージョンの psql を使い分ける。


サーバとクライアントのバージョンが違うと

WARNING:  You are connected to a server with major version 7.4,
but your psql client is major version 8.1.  Some backslash commands,
such as \d, might not work properly.

というメッセージが出る。\d は良く使うのでこれは困る。



debianpostgresqlはpg_wrapperというスクリプトバージョン(クラスタ?)が切り分けられている。
普通にpostgresql-client-*.* パッケージをインストールしただけでは、バージョンごとにコマンドを変えて実行できない。


どうやるのかというと、~/.postgresqlrc ファイルというのを作るらしい。
詳しくは

man postgresqlrc
man pg_wrapper
man user_clusters

などとしてみる。


クラスタ管理コマンドも搭載されているが、一台で複数ポートを使って複数のバージョンを同時に走らせる時以外は使わなさそう。


で、例えばローカルメインをpostgresql-8.1で使っているクライアントマシンから、 postgresql-server-7.4 に postgresql-client-7.4 を使って接続する場合、.postgresqlrcファイルに

7.4 hostname: databasename

と書く。これだけ。
hostnameの後のコロン重要。これがないとローカルと見なされる。後ろのdatabasenameはデフォルトで接続するデータベース名。


実際のバイナリファイルは /usr/lib/postgresql/*.*/bin 以下にあるので直接指定すれば使えるものの、一行書くだけなのでこっちの方が楽。