XamppでMysqlに接続できなくなった時の対処法

2023.07.15

普段自分でPHPのコーディングをする際にXamppのphpmyadminで開発環境を構築しているのだが、先日突然Mysqlが開けなくなった。

「Error: MySQL shutdown unexpectedly~~」とエラーには出るが、決定的な対処法までは記述されていなかったので、今回自分がやったエラー解決方法をメモとして残しておく。

ポートの重複を確認

Xamppのmysqlでは3306というポートが使われており、他にもこれと同じ番号のシステムが動いているとエラーが出るらしい。

なので、まずはXamppの右側にあるNeststatをクリックし、3306のポート番号が重複していないかを確認し、もし該当するシステムが動いてたら、それを停止すればオッケー。

※追記

最近Docerを入れたのだが、それがバックグラウンドで動いていたため、3306のポートの競合が起きる現象が発生した。

その場合はCtrl + Shift + Esc でバックグラウンド起動しているソフトを確認できるので、右クリック→「タスクの終了」を押せばオッケーだ。

Xamppのポートを変更してもOK

上記は根本的な解決にならないので、my.iniの中に入ってポート3306に設定されている箇所をxamppのポート番号を3307に変更してもいい。

$cfg['Servers'][$i]['host'] = '127.0.0.1:3307';

また、これまで作ったWPサイトなどは、wp-configのホスト設定で「localhost」になっている箇所を「127.0.0.1:3307」にする必要がある

define( 'DB_HOST', '127.0.0.1:3307' );

これを設定しなければ、phpmyadminに入る際にエラーが出るので注意

ポートが原因じゃない場合はdataフォルダをいじる

結果から言うと、自分はポートではなくxampp/mysql/data の中身をいじれば改善できた。

  • ① まずはdataフォルダの中にはエラーログやphpmyadminで作ったと思われるテーブルデータが格納されているので、まずはそれらを一旦自分のローカルに避難させておく。
  • ② dataフォルダに戻り、自分が作成したテーブルデータのフォルダ以外は全て削除する(phpmyadminやperformance_schema、mysqlも含む)。
  • ③ dataフォルダと同階層のbackupフォルダに入り、その中身を全てdataフォルダにコピーする。
  • ④ Xamppを再起動すれば解決

上記で何とか治ったが、なぜエラーが出たのか未だに原因は不明だが、MySQLを停止させずにシャットダウンさせるとこのような現象が起こることがあるらしい。

自分はこれまで数回同じ現象が起きたので、Xamppは必ずstopを押して閉じた方がよさそうだ。

ちなみに、これからしばらくしてから下記のようなとんでもないエラーが起きたので、同じような境遇の人は参考にしてもらいたい。

XAMPPのエラーを解決したらデータベースのテーブルが破損して焦った件

これでも治らない場合

追記になるが、また同じバグが発生し、今度はワードプレス画面にすら戻れなくなる現象が起きたが、最初にバックアップをとった下記のファイルをdataに突っ込んだら直った。

ibdata1

直接記事ページに行こうとするとエラーが出たが、管理画面から一度記事ページに行くとこのエラーはでなくなる。

とりあえずdataの中身は定期的にバックアップをとっておいた方がよさそうだ。

PIC UP