みんな大好き!「ActiveRecord::ConnectionNotEstablished」「Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 」
概要
ActiveRecord::ConnectionNotEstablished の原因と解決方法の解説
結論
大抵の場合、DBサーバーが起動されてないことが原因
詳細
はい!大抵の人が出くわしたことがあるであろう代表的なエラー ActiveRecord::ConnectionNotEstablished
出たよハイハイ。これね。チャチャっと解決。。。
と行きたいところだけど、いざ解決しようとすると詰まることってあるよね?
頻発するエラーじゃないからこそ再会したときには解決方法忘れちゃってる、、、なーんてことになってたり。
なので簡単に原因と解決方法をおさらい🙋♂️
原因と解決方法
まずは原因。「ActiveRecord::ConnectionNotEstablished」は日本語に訳すと「ActiveRecordが接続を確立出来なかったよー」つまり「DBサーバーに接続出来なかったよー」ということ。
DBに接続出来なかった理由は大きく分けて2つ。
- 接続先が反応しない
- 接続に必要な情報が誤っている(これは1度解決したらもう出くわさないだろう)
(他にもネット環境が〜、とかあるけど割愛)
ということで、1つ目の可能性を疑うべく、DBサーバーが反応するか確認してみよう!
まずはこのコマンドで確認。
$ mysql.server status ERROR! MySQL is not running
おう、、やはりDBサーバーが起動していなかった!
MacユーザーのほとんどはHomebrew
を使ってMySQL
をインストールしているはずなので、まずはbrew info mysql
でmysqlに関する情報を確認してみる。
$ brew info mysql mysql: stable 8.0.23 (bottled) Open source relational database management system -------------- (中略) -------------- MySQL is configured to only allow connections from localhost by default To connect run: mysql -uroot To have launchd start mysql now and restart at login: brew services start mysql Or, if you don't want/need a background service you can just run: mysql.server start -------------- (後略) --------------
こんな感じ🤔 mysqlを起動するには2通りのコマンドがあって、
- もしPCログインのたびに自動で起動させたかったら
brew services start mysql
- そうじゃなければ
mysql.server start
だそうだ。今後同じ問題に直面するのも面倒なので、最初の選択肢にしておこう。
$ brew services start mysql ==> Successfully started `mysql` (label: homebrew.mxcl.mysql)
下記コマンドで起動できたか確認っと。
$ mysql.server status SUCCESS! MySQL running (29958)
問題なく起動できた!ということで、ブラウザをリロードすれば先程のエラーは解決しているはずだ🙆♂️