👊

「ActiveRecord::ConnectionNotEstablished」に立ち向かう

2021/04/21に公開

久しぶりにRailsを触ってみたいと思い、こちらの記事を参考に、バックエンドにrails、フロントエンドにreactという構成でアプリを作ってみようとした際に起こったエラーを解決するまでのお話です。

エラーが起きた場所

以下のコマンドにて、

$ rails db:create
$ rails db:create
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"?
Couldn't create 'auth_app_api_development' database. Please check your configuration.
rails aborted!
ActiveRecord::ConnectionNotEstablished: 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"?

というエラーが発生。ActiveRecord::ConnectionNotEstablished: could not connect to server: No such file or directoryなどでググってみると、どうやらpostgresqlが立ち上がっていない様子

そこで、$ brew services start postgresqlというコマンドでpostgresqlを起動し、コンソールのlogに

==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)

と表示されたので、「これでOK」と思い再び$ rails db:createを打ったものの、また同じエラーが。。。

そこで、$ brew services listで起動できているのか確認してみたところ、以下のような状態になっていました。

$ brew services list
mysql      stopped       
mysql@5.7  stopped       
postgresql error   ryota /Users/ryota/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

postgresqlがエラー??

そこで、brew services list postgresql errorで検索してみたところ、以下の記事を発見。

Homebrewでインストールしたpostgresqlが起動しないのを調べた

解決した方法

記事にも書いてありますが、古いバージョンで作成したデータベースがどうやらよくなかったらしいです。

$ pg_ctl -D /usr/local/var/postgres start

The data directory was initialized by PostgreSQL version 12, which is not compatible with this version 13.2.

以下のコマンドを実行したのちにpostgresqlを$ brew services restart postgresqlで再起動したら治りました。

$ brew postgresql-upgrade-database
$ brew services list
Name          Status  User  Plist
mysql         stopped       
mysql@5.7     stopped       
postgresql    started ryota /Users/ryota/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
postgresql@12 stopped 

postgresのversion 12もstoppedになっているので成功です。

$ rails db:create
Created database 'auth_app_api_development'
Created database 'auth_app_api_test'

きちんと$ rails db:createもできました。

Discussion