あまブログ

ドキドキ......ドキドキ2択クイ〜〜〜〜〜〜〜ズ!!

【Rails】HomebrewのPostgreSQLをアップグレードする

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を再インストールする方法で解決しました。

$ gem uninstall pg
$ bundle install

【参考】