Kntmrkm.new

WEB技術のメモ

macOS PostgreSQLのアップグレード(brew)

通常なら、以下の記事のようにbrew upgrade後に移行してからbrew cleanupするのだけど、移行前にcleanupしてしまった場合。

kntmrkm.hatenablog.jp

バックアップを取る

/usr/local/varにあるpostgresフォルダをバックアップしておく(9.6への移行ならpostgres96など)。

Postgres初期化

  • initdb /usr/local/var/postgres -E utf8

移行前のバージョンのPostgreSQLを入れる

pg_upgradeをしてみる

前後が曖昧なので、このタイミングでアップグレードしてみる。

pg_upgrade -b /usr/local/Cellar/postgresql95/9.5.5/bin -B /usr/local/Cellar/postgresql/9.6.1/bin -d /usr/local/var/postgres95 -D /usr/local/var/postgres

恐らく、以下のエラー

LOG:  invalid value for parameter "log_timezone": "Japan"
LOG:  could not open directory "/usr/local/share/postgresql95/timezone": No such file or directory
LOG:  invalid value for parameter "TimeZone": "Japan"
FATAL:  configuration file "/usr/local/var/postgres95/postgresql.conf" contains errors
 stopped waiting

これは、/usr/local/share/postgresql95のフォルダがないから?なので、/usr/local/share/postgresqlをコピーする。

パーミッションエラー

DETAIL:  Permissions should be u=rwx (0700).
 stopped waiting

バックアップ時にmkdirしたりすると権限変わっているはずなので、chmod 700 /usr/local/var/postgres95する。

どっかのタイミングでdocker環境にしたほうが楽なのかな。