postgresql13から14に上げた時のエラー対処

brew install rbenvをおこなったら、ついでのようにpostgresまでアップグレードされたけど、こんなようなエラーが出た。

psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: Connection refused
    Is the server running locally and accepting connections on that socket?

psqlで入ろうとするとこうなるので、いろいろしらべて次のことをした。

一度アンインストール

brew uninstall postgresql

で一度アンインストールしてから

brew install postgresql

13から14へ既存のデータベースをアップグレード

2022-02-02 12:51:23.304 JST [850] FATAL:  database files are incompatible with server
2022-02-02 12:51:23.304 JST [850] DETAIL:  The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 14.1.

こんなようなエラーも出るので

brew postgresql-upgrade-database

をする。これは過去に自分がversion13でつくったやつを、手元で最新にインストールしているversion14でも開けるようにする処理。

pidというのを削除

$ postgres -D /usr/local/var/postgres
2022-02-02 13:16:11.685 JST [5122] FATAL:  lock file "postmaster.pid" already exists
2022-02-02 13:16:11.685 JST [5122] HINT:  Is another postmaster (PID 4726) running in data directory "/usr/local/var/postgres"?

探した記事の中にはpidというのを削除すれば良いという記事もあった。上記のコマンドも実行してpidを/usr/local/var/postgres/postmaster.pidと特定して、削除する。けれど、これが効果あったかは不明

psqlのコマンドに引数を渡さないとエラーになる。

psql

でDBに入ろうとすると「致命的なエラー""というDBがありません」と言われるので、-d postgresなどで適当なDB名を指定すると入れる。 psqlは引数なしで実行した場合、linuxのユーザー名のDB名を探してログインしようとするためらしい。 「致命的」は言い過ぎでは...? 🙃

余談、psqlのログの場所

locateとかもしばらく使ってなかったので忘れていた...

$ sudo locate postgres.log
/usr/local/var/log/postgres.log