😸

postgresqlバージョン変更したら動かなかった件(多分)

2020/12/23に公開

概要

チーム開発をしているが2週間ほど触っていないRailsアプリがあった。
(他のメンバーは開発を進めてくれている)

久しぶりに動かすので

$ rails db:migrate

を実行すると以下のエラー。

Postgres PG::ConnectionBad: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

PG::ConnectionBad: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

日本語訳

PG::ConnectionBad: サーバーに接続できませんでした。サーバーがローカルで動作していて、Unixドメインソケット"/tmp/.s.PGSQL.5432 "で接続を受け付けていますか?

何故こうなったのか、操作した記憶がなかったので検討がつかない。
とりあえずエラー文でググる。

ググった結果、brewpostgresqlサービスを
スタート、終了、再スタートすれば直ったという記事が多い。
やってみる。

$ brew services start postgresql
$ brew services stop postgresql
$ brew services restart postgresql

上記を実行後、再度

$ rails db:migrate

実行してみるが現状は変わらず。
アップグレードすると直る。という記事も多かったので試す。

$ brew postgresql-upgrade-database

現在のバージョンが最新との表示。(少し前にbrewの更新を行ったため。)

以下のコマンドを試す。(内容わかってない)

 $ postgres -D /usr/local/var/postgres
 
the data directory was initialized by postgresql version 12, which is not compatible with this version 13.1.

エラーの詳細?のようなものが表示された。

the data directory was initialized by postgresql version 12, which is not compatible with this version 13.1.

日本語訳

データディレクトリはpostgresqlバージョン12で初期化されており、このバージョン13.1とは互換性がありません。

現在使っているアプリのpostgresqlのバージョンが12だが、
今起動しているpostgresqlのバージョンは13で互換性がない?

アプリのと互換性のあるバージョンをインストールして合わせてみる。
12はすでにinstall済みだったのでインストールし直す。
バージョン13をストップし、バージョン12を起動。

 $ brew install postgresql@12
 $ brew reinstall postgresql@12
 $ brew services stop postgresql@13//13は停止
 $ brew services start postgresql@12

上記を実行後再度試す。

$ rails db:migrate

正常に処理が成功しました。

バージョンの互換性で動かなかったってことかな?
おそらくそうだと思いますが自信ないので、
タイトルに"(多分)"とつけてます。笑

なんとか解決できてよかった。

Discussion