#開発環境
- Ruby 2.5.8
- Rails 5.2.1
- MySQL 8.0.22
#新規開発をしようと「rails db:create」をした時のこと・・・
ポートフォリオの大方の設計が出来上がってきたので、アプリの大枠だけでも作成しようとrails new
をして新規アプリを作成し、rails db:create
でDBを作成しようとしたところ、エラーで止まった。
rails db:create
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Couldn't create 'myPF_development' database. Please check your configuration.
rails aborted!
Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
1週間ほど前に、実際の開発工程に入ってから躓くのは嫌だと思い、同じバージョンのRuby,Rails,MySQLで確りとテスト開発して確認したのになぜなのか…
1週間前は動いたmysql -u root -p
を打っても、
mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
となるばかりでまるで反応はなく…。またか…先週MySQL周りの設定で2日潰れたというのにまたなのか…MySQL君…、といった気持ちで調べてみるとやはりこの状況になる方は多いようで様々な記事が見つかりました。
その中でも、今回解決に導いてくれた記事を以下に貼っておきます。この記事のお陰で無事MySQLが動いてくれました。とても助かりました。
■ 参考にした記事
mysqlが起動できない(Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2))
解決はしましたが、今後もちょくちょくMySQL周りのエラーは起きそうな気がするので、Qiita記事を書く練習も兼ねてまとめておきます。上の記事と殆ど同内容にはなってしまいますがご容赦下さい。
#mysql.sockファイルを作成する
エラー文にも書いてあるとおり、mysql.sock
というファイルを通してローカルのMySQLサーバーに接続しているらしいのですが、そのmysql.sock
ファイルがないと言われています。
そして厄介なことに、このファイルがなんらかの原因で消えることがあるらしいと。なので、以下のコマンドを通してmysql.sock
ファイルを作成します。
sudo touch /tmp/mysql.sock
#MySQLの再起動をする
mysql.sock
ファイルを作成したら、MySQLを起動し直します。
sudo mysql.server restart
Starting MySQL
... SUCCESS!
やった!
#再度rails db:createしてみる
rails db:create
Created database 'myPF_development'
Created database 'myPF_test'
いけた!よかった!
#おわりに
これからもMySQL関連を触る時はお祈りしながらコマンドを打つことになりそうです…笑
先人のQiita記事に大感謝。
おまけ(個人的メモ) MySQLの起動:`mysql.server start` MySQLへの接続:`mysql -u root -p`