LoginSignup
21
20

More than 3 years have passed since last update.

Rails アプリ起動時のMysqlエラー を解消 (Mysql2::Error::ConnectionError ・ Can't connect to local MySQL server through socket '/tmp/mysql.sock')

Last updated at Posted at 2020-06-09

何をしようとして起きたエラーか?

自分で開発した Ruby on Rails のアプリを異なる開発環境で GitHubからソースコードをコピー(git clone)し、起動させようとしたところ Mysql エラーが起きた。

エラー内容

git clone した後、rails s でアプリを起動しようと試みる。
しかし、このようなエラーがでる。↓↓
スクリーンショット 2020-06-09 18.26.42.png

「DBを作成してないからだ!」と思い、

rails db:create

を実行するも rails s と同じような内容でエラー↓↓
スクリーンショット 2020-06-09 18.28.45.png

結論!(エラーの原因)

- 原因1

/tmp/mysql.sock のファイルが無かった

- 原因2

config/database.yml 内で socketの指定先が違っていた

以下で解決した方法を解説↓↓

解決のために行ったこと2つ

①原因1について

/tmp/mysql.sock ファイルが無かった原因は .gitignoreに記述してあるファイルのため Git 管理外のファイルとなっており、GitHub に無かったようである。

そこで、エラー文で指摘されている箇所ファイルを作成する。
下記のコマンドを実行

$ sudo touch /tmp/mysql.sock

もう一度 rails db:create を実行してみるがエラー↓↓

スクリーンショット 2020-06-09 18.36.31.png

同様のようなエラーに見えるが、エラー文の最後が (2) → (13) に変わっている。

②原因2について

調べてみるとどうやら今度は
config/database.yml 内で socketの指定先が違っていたよう

config/database.yml
    default: &default
      pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
      username: root
      password:
      socket: /tmp/mysql.sock # ←ここの部分

このファイルの /tmp/mysql.sock(6行目) ここが間違っているようだったので

config/database.yml
      socket: /tmp/mysql.sock

この部分を

config/database.yml
      socket: /var/lib/mysql/mysql.sock

このような記述に修正すると 解決!

その後、
rails db:create → rails db:migrate → rails s でアプリ起動成功!

参考にした資料

https://qiita.com/fujitora/items/d341c52706d1954cae28
https://qiita.com/carotene4035/items/e00076fe3990b9178cc0

最後に

色々調べて、闘っていたら何時間も消費してしまいました。自分の場合は上記のような方法で解決しましたが、DBや開発環境周りの知識が浅く、正直理解できていない部分がほとんどです。
同じよなエラーに遭遇した方のヒント、参考になれば幸いです。

間違い等々あればご指摘ください!

21
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
20