開発途中でmysqlのバージョンを下げる必要が出てしまったので、
現在インストール済みの最新バージョンを一度アンインストール→
下げたバージョンを再度インストール、ということを行ったのだが
その後起動しなくなってしまい、だいぶ詰まりました。
やったこと
まず今あるバージョンをアンインストール
(Homebrewを使用)
$ brew uninstall mysql
その後、任意のバージョンをインストール
$ brew install mysql@5.7
サーバーの起動
$ mysql server start
Starting MySQL
SUCCESS!
ここまではこちらを参考にしました
よし、できた!と思って念のため確認したところ、
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 44
Server version: 8.0.17 Homebrew
あれっ??
5.7をインストールし直したのに
まだバージョンが古いままになっている。。
で、この後がちゃがちゃ色々といじっていたら
サーバーの起動自体ができなくなってしまった。(中略)
以下、その後色々と試行錯誤した経緯です↓
ハマったエラー
$ mysql.server start
Starting MySQL
... ERROR! The server quit without updating PID file (/usr/local/var/mysql/************.local.pid).
サーバーを起動しようとすると、pidとかいうファイルがないと怒られる。
(*********の部分は自分のPC名)
どうやらこのエラーが出る場合は権限が問題らしい。
上にならって、pidファイルを作成してみる
$ touch /usr/local/var/mysql/************.local.pid
もう一度起動
$ mysql.server start
Starting MySQL
... ERROR! The server quit without updating PID file (/usr/local/var/mysql/************.local.pid).
同じエラー。
そもそも、/usr/local/var/mysqlの中身を見てみると
さっきtouchコマンドで作成したはずのpidファイルがない。
その後何回か同じ作業をしたけど、やっぱり出来上がらない。
************.local.errっていうファイルはあるんだけどなぁ。
関連ファイルを削除
$ sudo rm /usr/local/mysql
実はこれはアンインストール時にしなきゃいけなかったっぽい
mysqlをアンインストールするだけじゃなくて、
インストールしたことにより作られたファイルも一緒に
消さなきゃいけないんですね。
※これによりDBの中身も消えるので
再インストールした後はcreateするのを忘れずに
しかし、これをやっても解決しない
プロセスが動いてないか確認
$ ps aux | grep mysql
特に何もない。
解決方法:ログを見た
ここにある以外もかなり色々と試しましたが、
結局は以下の記事を参考にしながらログを見たところ、
きちんと答えが書いてありました。
(最初から見ればよかった・・・)
さっきちょっと気になってた
************.local.errっていうファイルの中に、mysqlのログが溜まるらしい。
ここをのぞいて見ると、
Another MySQL daemon already running with the same unix socket.
(自分のエラーログは消してしまったので他サイトから拝借)
どうやら他のソケットが走ってるとかなんとか。
ソケットファイルを削除
$ sudo rm mysql.sock
再起動
$ mysql.server start
Starting MySQL
SUCCESS!
成功!!!
そしてバージョンもしっかり5.7に!
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.27 Homebrew
どうやらmysqlを再インストール、再起動するときは
socketファイルも消さなきゃいけない
(同じユーザーとしてソケット通信をしないと、
権限がないと言われてしまう)みたいです。
分かったような分からないような・・・
とりあえず解決したのでよかったです。
まだ終わらない
やっとmysqlのエラーが解けた!と思って
意気揚々とDBのcreateをしたところ、
今度はcreateがうまくいかない・・・!
Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.21.dylib (LoadError)
なんかライブラリが読み込まれないとかなんとか。
こちらは割とすぐに解決しました
一度mysql2をアンインストールして、最後bundle install
$ bundle exec gem uninstall mysql2
$ bundle install
$bin/rake db:create
$bin/rake db:migrate
$bin/rails s
成功!
長かった。。