#はじめに
ある日突然、rails s でエラーが発生したので解決した方法を記録します。
誰かの参考になることを祈ります。
#開発環境
- macOS BigSur 11.6
- zsh: 5.8 (x86_64-apple-darwin20.0)
- Ruby: 2.6.3
- Rails: 6.1.4.1
$ mysql.server start
#出力
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/*******.local.pid).
その後、brew doctor、アクセス権限の再付与、エラーログのファイルを覗いて対策したり小手先のデバッグを色々してみたが結局似たようなエラー。
前日まで元気に動いていたのに、、、(涙目)
ということで1度再インストールし直すのが良さげなので実践。
#原因?
MySQLのバージョン切り替え時に出るエラーらしい。
バージョンは変更していないのでHomebrewのアップデートでMySQLまでバージョンが切り替わり、前のバージョンの使用したデータが残っていたためエラーが起こった???
#対策(解決)
手順
- 現在のMySQL をアンインストール
- プロセスの削除
- 新しくMySQL をインストール
上記の通り進めていきます。
###1. 現在のMySQL をアンインストール
brew uninstall mysql
brew uninstall --force mysql
brew cleanup -s mysql
#brew uninstall mysql では削除できないファイル群の削除
rm -rf /usr/local/mysql
rm -rf /Library/StartupItems/MYSQL
rm -rf /Library/PreferencePanes/MySQL.prefPane
rm -rf /Library/Receipts/mysql-.pkg
rm -rf /usr/local/Cellar/mysql*
rm -rf /usr/local/bin/mysql*
rm -rf /usr/local/var/mysql*
rm -rf /usr/local/etc/my.cnf
rm -rf /usr/local/share/mysql*
rm -rf /usr/local/opt/mysql
以下のコマンドで削除できているか確認します。
mysql --version
which mysql
消えてればOK。
###2. プロセスの削除
削除したMySQLとバージョンの違うMySQLがインストールされたとき、もとのバージョンのプロセスが残っているとエラーが発生することがあるらしいので削除しておく。
#プロセスの確認
ps -ef | grep mysql
#出力
501 41981 1 0 8:19PM ttys002 0:00.02 /bin/sh /usr/local/Cellar/mysql/8.0.26/bin/mysqld_safe --datadir=/usr/local/var/mysql --pid-file=/usr/local/var/mysql/UsersMacBook-Pro.local.pid
#表示されたプロセスを削除
kill -9 41981
killコマンドのオプション-9で強制終了。上記の41981がプロセスIDです。
###3. 新しくMySQL をインストール
#brewコマンドで新しくMySQLをインストール
brew install mysql
#インストール完了したら
mysql.server start
mysql -u root
#ログインが確認できたらexit
#Railsアプリに必要なら必要に応じて
rails db:create
rails db:migrate
rails db:seed
参考文献
・The server quit without updating PID file mysqlエラー解決方法
・MacでHomebrewを使ってinstallしたMySQL5.6とMySQL5.7を切り替えて使う
・MySQL起動エラーの対処の仕方【Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)】
・mysqlが死んだ日
#終わりに
無事解決してよかった、、、。(切実)
Twitterで日々の学習をアウトプットしています。
未熟者ですが、ご興味あれば覗いてやってください。→Twitter