不具合で、Macを再起動したあと、railsアプリが立ち上がらなくなってしまったので、その時の解決方法を紹介する。
目次
エラー内容
サーバを立ち上げたあと、localhost:3000
にアクセスすると、以下のエラーが出ました。
Can't connect to local MySQL server through socket '/tmp/mysql.sock'
解決方法
mysqlの問題かなと思ったので、まずは/tmp/mysql.sock
を作成しました。
sudo touch /tmp/mysql.sock
そして次にmysqlを立ち上げようと下記を実行
sudo mysql.server start
この時成功すれば、以下のように表示されます。
Starting MySQL
. SUCCESS!
これで解決した人はこの記事はここまでで大丈夫です。
まだエラーが出る方用
まだエラーが出る場合は、以下のようなエラーになるでしょう。
ERROR! MySQL server PID file could not be found!Starting MySQL.. ERROR!
The server quit without updating PID file (/opt/homebrew/var/mysql/****.local.pid).
エラーの詳細を調べるには以下のコマンドを実行します。
sudo cat /opt/homebrew/var/mysql/*****.local.err
*****の部分は自分のパソコンのホスト名(「uname -n」コマンドで確認可)
すると、色々エラーが見えると思います。
私の場合は、以下のようなエラーが出ていました。
Can't start server : Bind on unix socket: Address already in use
....
Could not open unix socket lock file /tmp/mysql.sock.lock.
....
Can't start server : Bind on unix socket: Address already in use
これは、MySQLが使用しようとしているUNIXソケットが既に使用中であることを示しています。
これは通常、別のmysqldプロセスが既に実行中である場合に発生します。
Could not open unix socket lock file /tmp/mysql.sock.lock.
これは、MySQLがUNIXソケットのロックファイルを開くことができないことを示しています。
これはファイルシステムの権限の問題、または別のプロセスがファイルをロックしている場合に発生する可能性があります。
解決のコマンド
既存のMySQLプロセスの終了
現在実行中のMySQLプロセスを探し、それを終了します。
これを行うには、ターミナルで以下のコマンドを実行します。
sudo pkill mysqld
ソケットファイルとロックファイルの削除
ソケットファイルとそのロックファイルを手動で削除します。
これにより、MySQLが新しいソケットを作成できるようになります。以下のコマンドを実行します。
sudo rm /tmp/mysql.sock /tmp/mysql.sock.lock
MySQLの再起動
最後に、MySQLを再起動して、問題が解決したかどうかを確認します。
sudo mysql.server start
これで解決できました🎉
もし解決できない場合は、mysqlのインストールをし直してみてください。brew reinstall mysql