rails開発中にモデルを作成しようとしたらターミナルに以下の様なエラーが表示されました。昨日までは問題なく作成できていたのに...
Can't connect to local MySQL server through socket '/tmp/mysql.sock'
今回はこのエラー解決までの過程を書いていきます。
開発環境
Mac OS Catalina: 10.15.7
ruby: 2.6.6
rails: ~> 6.1.0
mysql: 8.0.23
結論
MySQLを起動していなかった。
# MySQLでDBを作成したい
rails db:create
を実行してDBを作成しようとしたら以下の様なエラー文が表示された
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Couldn't create 'room_anatomy_development' database. Please check your configuration.
rails aborted!
ActiveRecord::ConnectionNotEstablished: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
/Users/cha-han/workspace/room-anatomy/bin/rails:5:in `<top (required)>'
/Users/cha-han/workspace/room-anatomy/bin/spring:10:in `block in <top (required)>'
/Users/cha-han/workspace/room-anatomy/bin/spring:7:in `tap'
/Users/cha-han/workspace/room-anatomy/bin/spring:7:in `<top (required)>'
Caused by:
Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
/Users/cha-han/workspace/room-anatomy/bin/rails:5:in `<top (required)>'
/Users/cha-han/workspace/room-anatomy/bin/spring:10:in `block in <top (required)>'
/Users/cha-han/workspace/room-anatomy/bin/spring:7:in `tap'
/Users/cha-han/workspace/room-anatomy/bin/spring:7:in `<top (required)>'
Tasks: TOP => db:create
(See full trace by running task with --trace)
エラー文前半から、どうやら/tmp/mysql.sockを通してMySQLと繋がるつもりができなかった様だ。
そもそもsocketとは何だろうか?軽く調べてみた。
ソケットとは
MySQLのクライアントとサーバをつなげるための通信機構のこと
おそらく、ソケットの設定が書かれた/tmp/mysql.sockファイルが見つからないからMySQLに繋がることができない。
実際にファイルを探したが見つからなかった。
色々試行錯誤したが、そもそもMySQLが起動していたか試してみるとあっさり直った。
/tmp/mysql.sockファイルも作成されていた。
mysql.server start
#まとめ
ケアレスミスですが、自分への戒めのために残しておきます。