普段自分でPHPのコーディングをする際にXamppのphpmyadminで開発環境を構築しているのだが、先日突然Mysqlが開けなくなった。
「Error: MySQL shutdown unexpectedly~~」とエラーには出るが、決定的な対処法までは記述されていなかったので、今回自分がやったエラー解決方法をメモとして残しておく。
Table of Contents
ポートの重複を確認
Xamppのmysqlでは3306というポートが使われており、他にもこれと同じ番号のシステムが動いているとエラーが出るらしい。
なので、まずはXamppの右側にあるNeststatをクリックし、3306のポート番号が重複していないかを確認し、もし該当するシステムが動いてたら、それを停止すればオッケー。
※追記
最近Docerを入れたのだが、それがバックグラウンドで動いていたため、3306のポートの競合が起きる現象が発生した。
その場合はCtrl + Shift + Esc でバックグラウンド起動しているソフトを確認できるので、右クリック→「タスクの終了」を押せばオッケーだ。
dataフォルダの中身をいじる
結果から言うと、自分はポートではなくxampp/mysql/data の中身をいじれば改善できた。
- ① まずはdataフォルダの中にはエラーログやphpmyadminで作ったと思われるテーブルデータが格納されているので、まずはそれらを一旦自分のローカルに避難させておく。
- ② dataフォルダに戻り、自分が作成したテーブルデータのフォルダ以外は全て削除する(phpmyadminやperformance_schema、mysqlも含む)。
- ③ dataフォルダと同階層のbackupフォルダに入り、その中身を全てdataフォルダにコピーする。
- ④ Xamppを再起動すれば解決
上記で何とか治ったが、なぜエラーが出たのか未だに原因は不明だが、MySQLを停止させずにシャットダウンさせるとこのような現象が起こることがあるらしい。
自分はこれまで数回同じ現象が起きたので、Xamppは必ずstopを押して閉じた方がよさそうだ。
ちなみに、これからしばらくしてから下記のようなとんでもないエラーが起きたので、同じような境遇の人は参考にしてもらいたい。
XAMPPのエラーを解決したらデータベースのテーブルが破損して焦った件
これでも治らない場合
追記になるが、また同じバグが発生し、今度はワードプレス画面にすら戻れなくなる現象が起きたが、最初にバックアップをとった下記のファイルをdataに突っ込んだら直った。
ibdata1
直接記事ページに行こうとするとエラーが出たが、管理画面から一度記事ページに行くとこのエラーはでなくなる。
とりあえずdataの中身は定期的にバックアップをとっておいた方がよさそうだ。