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 は良く使うのでこれは困る。
debianのpostgresqlは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 以下にあるので直接指定すれば使えるものの、一行書くだけなのでこっちの方が楽。