あきろぐ

いろいろめもするよ🐈🐈🐈

PostgreSQLを入れ直したらrails db:prepareできなくなった

何が起きたのか

PostgreSQLが立ち上がらなくなってしまったので、再度インストールし直した後rails db:prepareを実行したところ、以下のようなエラーが発生した。

rails aborted!
LoadError: dlopen(/Users/xxx/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/pg-1.3.1/lib/pg_ext.bundle, 0x0009): Library not loaded: /opt/homebrew/opt/postgresql/lib/libpq.5.dylib
  Referenced from: /Users/xxx/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/pg-1.3.1/lib/pg_ext.bundle
  Reason: tried: '/opt/homebrew/opt/postgresql/lib/libpq.5.dylib' (no such file), '/usr/local/lib/libpq.5.dylib' (no such file), '/usr/lib/libpq.5.dylib' (no such file) - /Users/xxx/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/pg-1.3.1/lib/pg_ext.bundle

エラーの内容としては、以下のファイルがディレクトリ内になくて実行できないとのこと

原因

PostgreSQLを再度インストールしたときにバージョンが上がってしまったことにより、PostgreSQLディレクトリのパスが/opt/homebrew/opt/postgresql@14/変更されてしまったこと。

🍒~$ ls /opt/homebrew/opt/postgresql@14/lib/postgresql@14
_int.so             hstore_plperl.so        libpq.dylib         refint.so
adminpack.so            insert_username.so      libpqwalreceiver.so     seg.so
amcheck.so          isn.so              lo.so               sslinfo.so
auth_delay.so           jsonb_plperl.so         ltree.so            tablefunc.so
auto_explain.so         latin2_and_win1250.so       moddatetime.so          tcn.so
autoinc.so          latin_and_mic.so        old_snapshot.so         test_decoding.so
bloom.so            libecpg.6.14.dylib      pageinspect.so          tsm_system_rows.so
bool_plperl.so          libecpg.6.dylib         passwordcheck.so        tsm_system_time.so
btree_gin.so            libecpg.a           pg_buffercache.so       unaccent.so
btree_gist.so           libecpg.dylib           pg_freespacemap.so      utf8_and_big5.so
citext.so           libecpg_compat.3.14.dylib   pg_prewarm.so           utf8_and_cyrillic.so
cube.so             libecpg_compat.3.dylib      pg_stat_statements.so       utf8_and_euc2004.so
cyrillic_and_mic.so     libecpg_compat.a        pg_surgery.so           utf8_and_euc_cn.so
dblink.so           libecpg_compat.dylib        pg_trgm.so          utf8_and_euc_jp.so
dict_int.so         libpgcommon.a           pg_visibility.so        utf8_and_euc_kr.so
dict_snowball.so        libpgcommon_shlib.a     pgcrypto.so         utf8_and_euc_tw.so
dict_xsyn.so            libpgfeutils.a          pgoutput.so         utf8_and_gb18030.so
earthdistance.so        libpgport.a         pgrowlocks.so           utf8_and_gbk.so
euc2004_sjis2004.so     libpgport_shlib.a       pgstattuple.so          utf8_and_iso8859.so
euc_cn_and_mic.so       libpgtypes.3.14.dylib       pgxml.so            utf8_and_iso8859_1.so
euc_jp_and_sjis.so      libpgtypes.3.dylib      pgxs                utf8_and_johab.so
euc_kr_and_mic.so       libpgtypes.a            pkgconfig           utf8_and_sjis.so
euc_tw_and_big5.so      libpgtypes.dylib        plperl.so           utf8_and_sjis2004.so
file_fdw.so         libpq.5.14.dylib        plpgsql.so          utf8_and_uhc.so
fuzzystrmatch.so        libpq.5.dylib           pltcl.so            utf8_and_win.so
hstore.so           libpq.a             postgres_fdw.so         uuid-ossp.so

解決策

pgをアンインストールした後、再度インストールする

gem uninstall pg
bundle install