PostgreSQL を 8.4.5 から 8.4.16 にアップグレードしたときのメモ

単純に、PostgreSQL 8.4.16 のソースファイルがあるディレクトリで


$ ./configure
$ make
$ sudo make install

としたら、Rails アプリケーションからのデータベース接続ができなくなりました。


PGError: ERROR: unrecognized time zone name: "UTC"
: SET time zone 'UTC'

原因はよくわかりませんが、データベースを作り直したら接続できるようになりました。

そのときの手順をまとめておきます。
すべて PostgreSQL 用のユーザーアカウント postgres での操作です。

手順

データベース全体のバックアップ


$ pg_dumpall > /path/to/backupfile

データベース・サーバを停止する


$ pg_ctl stop

データファイルのためのディレクトリを(念のため)リネームし、新しく作る


$ mv $PGDATA{,_old}
$ mkdir $PGDATA

コンパイルとインストール (デフォルトで /usr/local/pgsql にインストールされる)


$ cd /path/to/src
$ ./configure
$ make
$ sudo make install

データベースの初期化


$ initdb --no-locale --encoding=UTF8 -D $PGDATA

データベース・サーバの開始


$ pg_ctl -D $PGDATA -l /path/to/logfile start
$ pg_ctl status

データのリストア


$ psql -d postgres -f /path/to/backupfile