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に入ろうとすると「致命的なエラー"-d postgres
などで適当なDB名を指定すると入れる。
psqlは引数なしで実行した場合、linuxのユーザー名のDB名を探してログインしようとするためらしい。
「致命的」は言い過ぎでは...? 🙃
余談、psqlのログの場所
locateとかもしばらく使ってなかったので忘れていた...
$ sudo locate postgres.log /usr/local/var/log/postgres.log