何をしようとして起きたエラーか?
自分で開発した Ruby on Rails のアプリを異なる開発環境で GitHubからソースコードをコピー(git clone)し、起動させようとしたところ Mysql エラーが起きた。
エラー内容
git clone した後、rails s
でアプリを起動しようと試みる。
しかし、このようなエラーがでる。↓↓
「DBを作成してないからだ!」と思い、
rails db:create
結論!(エラーの原因)
- 原因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
を実行してみるがエラー↓↓
同様のようなエラーに見えるが、エラー文の最後が (2) → (13) に変わっている。
②原因2について
調べてみるとどうやら今度は
config/database.yml
内で socket
の指定先が違っていたよう
default: &default
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password:
socket: /tmp/mysql.sock # ←ここの部分
このファイルの /tmp/mysql.sock
(6行目) ここが間違っているようだったので
socket: /tmp/mysql.sock
この部分を
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や開発環境周りの知識が浅く、正直理解できていない部分がほとんどです。
同じよなエラーに遭遇した方のヒント、参考になれば幸いです。
間違い等々あればご指摘ください!