##localhost:3000で出たエラーを解決させました
自作アプリの開発中に起きたエラーを紹介します。
#環境
・macOS
・Rails 5.2.4.3
・Ruby 2.5.1
今日(投稿日)はエンゼルスの大谷投手が693日ぶりに登板と言う事で、めちゃくちゃテレビを見たい気持ちを抑えて、いつも通りの朝活を行う事に。。。
へ?
何だこれは??
一瞬頭が真っ白になってしまいました。
なかなか自作アプリ開発が思う様に進まない中で、もはや自分でアプリを見ることすら出来ないのかと愕然。
5分くらい絶望した後に、取り敢えずエラーの解析から始めました。
#Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)って何??
エラーの内容を調べていると結構同じ様なエラーに遭遇されている方が多かったので、その記事を見ていくと、
クライアント(自分のPC) → /var/lib/mysql/mysql.sock にデータを見に行こうとしたら、そんな場所ないじゃん。って感じのエラーなんだと理解。
#socketとは
プログラムとネットワークを結ぶ接続口。仲介役。仲介業者。仲人。合コンで言う幹事。
って事で正しい出入り口(ソケット)を探す旅に
##socketってどこにあんの??
他の記事を読み漁り、socketの存在を調べました
特に参考にさせてもらった記事
Can't connect to local MySQL server through socket '/tmp/mysql.sock'
記事を読み比べる中で
'/tmp/mysql.sock'
'/var/lib/mysql/mysql.sock'
と言う2つのソケットを見比べて、
「自分のエラーの場合は'/var/lib/mysql/mysql.sock'に行こうとしたが、そんな場所はないと言われているので、そこを見つけて修正すれば良いのか!!」と推測。
で、どこに書いてあんの?
##解決法
この記事を読んで私も解決しました
【Rails】ローカル環境におけるmysql接続エラー対処法【Can't connect to local MySQL server through socket】
#修正前
development:
<<: *default
database: データベース名_development
username: root
password: <%= ENV['DATABASE_PASSWORD'] %>
socket: /var/lib/mysql/mysql.sock
#修正後
development:
<<: *default
database: データベース名_development
username: root
password: <%= ENV['DATABASE_PASSWORD'] %>
socket: /tmp/mysql.sock
/var/lib/mysql/mysql.sock → /tmp/mysql.sock に変更してます
コードの修正を行ったので、再起動させます。
rails s
これでソケット名が正しくなったので、無事に閲覧が出来ました!!
##原因
database.ymlですが、特に自分で何かを記述した訳ではなくて、何かしらの教材や記事を
コピペしてしまう事で、起きやすい事象なのかと思いました。
その分、最初はすごく焦りましたが、今まで気にしなかった所を考えたり、エラー文を調べていく中で、同じ様なエラーに遭遇されている方が多かった事も、自分の中では収穫でした。ymlを一度見てもらうのも良いかも知れません。
最後にsocketの
'/tmp/mysql.sock'
'/var/lib/mysql/mysql.sock'
の箇所ですが、使われている方によっては、
/tmp/mysql.sock → /var/lib/mysql/mysql.sock
が正解のパターンも多くあると思いますので、まずは自身のsocketの所在を確認してみてください!!