psql: error: connection to server on socket “/tmp/.s.PGSQL.5432” failed: No such file or directory が出た時の対応:過去データベースが消える版(備忘録)

このエラーでググってこちらに来て下さった方は、下記記事の対応が現時点での最適解と考えますので、こちらをまずご覧ください。(2021/11/25追記)

エラーの発生

postgresqlを立ち上げようとした所下記のエラーメッセージが出た。

% psql postgres
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
	Is the server running locally and accepting connections on that socket?

色々試しても何も変わらない。

探すとこちらの記事があった。まんま同じ名前のstack overflowの記事。
psql: error: connection to server on socket “/tmp/.s.PGSQL.5432” failed: No such file or directory

今回取った対応:ダウングレード

要はpostgresql14になったから発生したエラーだから、ダウングレードすべし、と言うもの。
アドバイス通りやりました。

brew uninstall postgresql
brew install postgresql@13
brew services start postgresql@13
brew link postgresql@13 --force

しかし、皆様お分かりと思いますが、これはただpostgresql14をアンインストールして、postgresql13を入れ直す荒技です。

解決とダウングレードの影響

改めてpostgresqlを立ち上げると過去に作ったデータベースは無くなっていました。
練習用に作ったデータベースが殆どなのでダメージはそれほどでもありません。

何はともあれ、解決しました。情報共有感謝。

解決はしたけれど

このエラー、実は頻繁に起きる様です。

今回の件で調べている中でも数年前から色々なバージョンのpostgresqlについて同様のエラーメッセージで質問している人を多く見かけました。

このエラーが起きる度にデータベースをクリアしていると大変なので更に色々調べてみると、下記の記事がありました。
postgresqlでDBが作れなかったのを解決(してもらった)

なる程納得。

何はともあれ
/usr/local/var/log/
にある”postgres.log”を見ましょう、との事。

新しく作った@13のログは”postgresql@13.log”の別ログで保存されており、元のログが“postgres.log”で残っていました。

確認した所記事で仰る通りでした。
ログは下記の通り。

2021-11-03 18:12:05.775 JST [25489] FATAL:  database files are incompatible with server
2021-11-03 18:12:05.775 JST [25489] DETAIL:  The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 14.0.

対応は以下2択

  1. brew install でバージョン13のpostgresqlを入れ直す。
  2. データディレクトリを消してどちらもバージョン14をインストールし直す。

今回やったのは1のバージョン13のpostgresql入れ直し。
これだとデータベースが消える事が分かった。

次発生した際は2のデータディレクトリを消してどちらも14をインストールし直そう。
過去のデータを残したまま解決すると良いのだけれど、どうなるかはまた次回のお楽しみ(?)。

“psql: error: connection to server on socket “/tmp/.s.PGSQL.5432” failed: No such file or directory が出た時の対応:過去データベースが消える版(備忘録)” への1件の返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

20 − ten =

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください