経緯
寝る前
「macOSのアプデきてるしついでにbrew upgrade
もするかぁ」
$ brew update && brew upgrade
「よし!寝よう!」
次の日
「よぉし自作Webアプリの開発の続きでもするかぁ..サーバー建てて...ってあれ?」
「おかしいな...何もデータが取得されないぞ...」
...
ん?あれ?鯖落ちてる?
「...ログイン時になんかの間違いで自動起動できなかったんかな」
$ mysql.server restart
Starting MySQL
... ERROR! The server quit without updating PID file (/usr/local/var/mysql/*****.local.pid).
...
「あ、オワタ」
愚かな自分の対応
1. 安直にエラー内容でググる
昨日の自分の行動を思い返すこともなく、私はひとまず上に出たエラー文でググりました。
この他にもかなりの量の記事が見つかったので、私はすっかり安心しきってしまいました。
2. 記事に書いてある対処を何も考えずに実施
ネット上の情報は大体、
- プロセスの多重起動が原因→停止しろ
- 「ファイルがない」なら自分で作れ→権限設定をせよ
- できなければ再インストール
といった感じでした。
というわけで、記事に書いてある内容をとりあえず試してみました。
ところがどっこい、何一つとして状況は進展しませんでした。
エラー内容は最初と何ら変わりません。
3.意気消沈、そして
状況があまりに変わらないので、私はすっかり落ち込み、いっそOSごと環境を再構築することも考えだしました。
そんなこんなで丸1日経過し、これで解決しなければやめようと思った頃、この記事に出会って目を覚ましました。
この記事は、エラー内容こそ今までにみた記事と同じでしたが、単なるQ&Aではなく、エラー解決までの道のりを一つずつ追っていく形式になっています。
この記事の2. を見てふと気づきました。
...そういえばログファイル1回も見てなくね?
トラブルシューティングにおいて最重要、まさに本丸と言える「ログファイルを読む」ということを、愚かなことに私は全くしていなかったのです。
上の記事だけでなく、私が調べた記事の多くで「ログを当たれ」という記述がありました。
私は表面上の解決だけを目指していて、真の原因究明と対応をしようとしていませんでした。
原因判明、復活
早速ログファイルを探索します。
2024-08-14T14:35:33.142472Z 1 [ERROR] [MY-014060] [Server] Invalid MySQL server upgrade: Cannot upgrade from 80300 to 90001. Upgrade to next major version is only allowed from the last LTS release, which version 80300 is not.
冒頭でお気づきの方もいらっしゃると思いますが、そうです。
なんと私はMySQL 8.0の環境を自分の手で無理やり9.0にしていたのです。
これでは起動するわけがありません。
早速環境を元に戻します。
$ brew uninstall mysql && brew install mysql@8.0
$ brew services start mysql@8.0
$ mysql.server restart
Shutting down MySQL
. SUCCESS!
Starting MySQL
. SUCCESS!
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
というわけで、自分で壊した環境を自分で立て直すのに丸一日費やした愚か者のお話でした。
結論
トラブルシューティングをするときは、
- エラーに遭遇しても、すぐにエラー文でググらない
- たとえ解決したとしても、何も考えずに調べた操作を行わない
↓ - まずは直前の操作を振り返る
- ログファイルなど、証拠集めを万全に行う
- エラー原因を予想し、そこからネット・ドキュメントを調べる
- 納得した上で操作し、解決する
ことが必要だなと思いました。
皆様も私のようにならないよう、ぜひお気をつけください。