XAMPPでMySQLが起動しない時の対処法です。ここ1年くらいなんともなかったんですが、とうとう例の不具合が発症してしまいました。
XAMPPを終了する際に、XAMPP Control PanelからApacheやMySQLを「STOP」させずに、Quitなどでいきなりアプリを終了させると、MySQLに不具合が生じる様です。ならない時はなりませんが、何かの拍子にMySQLが起動しなくなり(正確には起動してもすぐに停止してしまう)、最悪、XAMPP自体を再インストールするハメになります。
なおXAMPPのバーチャルホストで複数ドメインに対応させたい場合は、以下の記事も参考にしてみてください。
このページのコンテンツ
対処法
エラーの内容のほとんどは「適切な手順で終了しなかったからだよ!」といったもの。他には「MySQLで指定してるポートが既に使われてる」といったエラーも多い。いずれにしても、XAMPPの終了時に適切な終了をさせない場合に起こる事が多いようです。
エラーログの一例
Error: MySQL shutdown unexpectedly.
This may be due to a blocked port, missing dependencies, improper privileges, a crash, or a
shutdown by another method.
Press the Logs button to view error logs and check the Windows Event Viewer for more clues If
you need more help, copy and post this entire log window on the forums
沢山の人が同様のエラーに苦しめられ、何をしても解決せず、最終的にXAMPPの再インストールを余儀なくされるケースが多いようでして、管理人も昨年起きたエラーの時は、ネット上にある情報では解決せず再インストールしました。
原因の切り分けと確認
エラーメッセージは必ずしも、本当の原因を示しているとは限りませんので、管理人はまず、以下の項目について確認するようにしてます。一応mysql_error.logも確認しますが、SQL自体詳しくない上に、エラーらしい内容もかかれていないので特定できません。
ファイルの削除や移動などは自己責任で行ってください。不安があるのであればやらないでください。
他で起動してるMySQLがないか確認
タスクマネージャーを起動して、他にMySQLが起動していないか確認してください。別のMySQLが動いていて、同じポートを使用しているとエラーになります。
もし、他のMySQLが動いているようならタスクを終了し、XAMPPも再起動した上でMySQLが起動するか試してください。それでも動かない場合はmy.iniより、MySQLが使うポートを変更するなどしてみてください。
ちなみデフォルトのポート「3306」が使われているかどうかの確認は、XAMPP Control Panelの「NetStat」から確認できます。現在、どのプロセスがどのポートを使用しているか一覧表示されますので、3306が無いか確認してください。
今回はこれに該当せず
PC再起動
基本中の基本です。ただ、これで直るって事はまずないです…
今回はこれに該当せず
XAMPPを管理者権限で起動
これで解決した人もいるようですが、そもそも管理者権限の問題で起動しないのであれば、XAMPPインストール直後から動いてない気もします。管理人もそうですが、ほとんどの人は管理者権限の有無は関係なく「ある日突然動かなくなった」のではないかと思います。
今回はこれに該当せず
今回の解決方法
dataフォルダ内にあるファイルを削除してbackupフォルダ内のファイルから復元する形で復旧しました。
具体的にはXAMPP Control Panel → MySQLの「Config」から「Browse」をクリックするとフォルダが開きます。その中にあるdataフォルダを開いてください。
まずはdataフォルダ自体を、デスクトップなど、どこかにバックアップしてください。バックアップしたらmysql\data内の以下のフォルダとファイルを削除。
- mysql
- performance_schema
- phpmyadmin
- test
- 自分で作ったデータベース以外のファイル全て
その後、mysql\backup内のフォルダとファイルを全てコピーしてmysql\dataにペーストしてください。ここまで終わったら、一旦XAMPPを再起動させてください。
次に、バックアップしたdataフォルダの中からibdata1というファイルをコピーして、XAMPPを終了後にmysql\data内の同名ファイルに上書きしてください。このファイルはデータベースの情報が保存されたファイルらしいので、このファイルを上書きしないとMySQL自体は復旧しても、元のデータベースのテーブルにはアクセスできない状態になるようです。
ちなみにこのファイルの上書きを忘れて新たにデータベースを追加したりすると、データベースが削除できなくなったり、各種操作などができない状態になってしまうようです。
下記は失敗した時の不具合の一部と思われるもので、データベースを削除するための項目が消えしまっており、削除する事ができません。ibdata1の上書きをせずに新たにデータベースを作成したり、既存のデータベース名を変えたりした後にこんな感じになりました。
作業の際はお気をつけください。
2022/12/20
Windows11にしてからXAMPPのSQLがなんだか不安定です。原因がWindows11になるか不明ですが、対処方法をまとめました。
この記事を書いた人管理人
SAKURAGRAPHICA代表
会社員の傍ら、フリーランスでWEBサイトの制作やWordPressによるCMSの構築・障がい者の就労支援としてホームページ制作の職業指導員も行っております。