HomebrewでインストールしたPostgreSQL 14をPostgreSQL 16にアップグレードした時のメモです。
開発環境
- Homebrew:4.2.6
- PostgreSQL:16.1
- rbenv:1.2.0
- Ruby:3.3.0
- Rails:7.1.2
- pg:1.5.4
- MacBook Pro (13-inch, 2020)
- macOS Sonoma 14.2.1
PostgreSQL 14からPostgreSQL 16にアップグレード
自分の場合は、ローカルデータはすべて削除しても問題なかったので、PostgreSQL 14を削除してPostgreSQL 16をインストールする手順でアップグレードを行いました。
PostgreSQL 14を停止
$ brew services stop postgresql@14 Stopping `postgresql@14`... (might take a while) ==> Successfully stopped `postgresql@14` (label: homebrew.mxcl.postgresql@14)
PostgreSQL 14をアンインストール
$ brew uninstall -f postgresql@14
不要になったディレクトリを削除
$ rm -rf /opt/homebrew/var/postgres $ rm -rf /opt/homebrew/var/postgresql@14
PostgreSQL 16をインストール
$ brew install postgresql@16
.zshrc
を編集
# データディレクトリの設定 + export PGDATA=/usr/local/var/postgresql@16 # PostgreSQL 16のライブラリのパスを通す + export PATH=$PATH:/usr/local/opt/postgresql@16/bin
PostgreSQL 16を起動
$ brew services start postgresql@16
PostgreSQL 16が起動していることを確認
$ brew services list
PostgreSQL 16でRailsが起動できない
PostgreSQL 16にアップグレード後に、bin/rails s
でrailsアプリを起動しようとしたら以下のエラーが発生しました。
/Users/kazunoko/.rbenv/versions/3.3.0/lib/ruby/3.3.0/bundled_gems.rb:74:in `require': dlopen(/Users/kazunoko/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/pg-1.5.4/lib/pg_ext.bundle, 0x0009): Library not loaded: /usr/local/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib (LoadError) Referenced from: <C1528F8A-C92F-336F-9E45-2466221D8F4F> /Users/kazunoko/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/pg-1.5.4/lib/pg_ext.bundle Reason: tried: '/usr/local/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib' (no such file), '/usr/local/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib' (no such file) - /Users/kazunoko/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/pg-1.5.4/lib/pg_ext.bundle
Reason: tried: '/usr/local/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib' (no such file)
- pg gemが
postgresql@14
の時のパスを見てる
- pg gemが
同様のエラーで検索すると、解決法としてシンボリックリンクを貼る方法とpg gemを再インストールする方法がありました。
自分はpg gemを再インストールする方法で解決しました。
$ gem uninstall pg $ bundle install
【参考】
- How to upgrade PostgreSQL with Homebrew
- Mac: HomebrewでインストールしたPostgreSQLをアップグレードする|TechRacho by BPS株式会社
- Correct way to update PostgreSQL · Homebrew · Discussion #4451
- PostgreSQL: Documentation: 16: pg_upgrade
- postgresql14でpgが動かない - komagataのブログ
- postgresql - Library not loaded: /usr/local/lib/libpq.5.4.dylib - Stack Overflow