ことれいのもり

XAMPPでMySQLのStartボタンを押しても起動しないエラーの復旧方法

はじめに

XAMPPControllPanelでMySQLを使っていると、たまにMySQLでStartボタンを押してもエラーが出て止まることがあります。

このエラーの対処方法を紹介します。

発生するエラー

XAMPPControllPanelでStartボタンを押したとき、エラーが発生し、勝手にStop状態に戻ります。

ControlPanelのエラー


このときのエラー文は以下の通りです。

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


日本語に翻訳するとこうなります。

エラー: MySQL が予期せずシャットダウンしました。
ポートのブロック、依存関係の不足、不適切な権限、クラッシュ、または別の方法によるシャットダウンが原因の可能性があります。
[ログ] ボタンを押してエラーログを表示し、Windows イベント ビューアーでさらに詳しい情報を確認してください。
さらにサポートが必要な場合は、このログ ウィンドウ全体をコピーしてフォーラムに投稿してください。


エラー文を見る限り、ポート関係または依存関係か何らかの影響によるクラッシュと分かります。

ポート関係はいじっていないので、データを復旧する方向でアプローチしてみました。

対処方法

データを復旧させます。

まず、私のMySQLには自分で2つのデータベースを作っていました。

自分で作成したデータベース

・cms
・cms_demo


残りのファイルはデフォルトで存在していた物です。

1. dataフォルダを別の場所にコピーして待避させる

xampp\mysql\dataフォルダを一旦別の場所にコピーして待避させます。

その後、xampp\mysql\dataフォルダの中身を全て削除します。


【画像で補足】

xampp\mysql\dataフォルダです。

xampp\mysql\dataフォルダ


これをまるごとコピーして別の場所に置きます。

私はデスクトップに置きました。

別の場所に待避させたdataフォルダ


コピーが終わったら、xampp\mysql\dataフォルダの中身を全て削除します。

xampp\mysql\dataフォルダの中身を全て削除する

2. backupフォルダの中身をdataフォルダへ移す

xampp\mysql\backupフォルダの中身を全てコピーし、xampp\mysql\dataフォルダの中へ貼り付けます。(待避させた方ではなく、全部削除した方に貼り付けます)


【画像で補足】

xampp\mysql\backupフォルダです。

backupフォルダの位置


この中身を全てコピーします。

backupフォルダを全選択してコピーする


コピーしたら、先程中身を全て消したxampp\mysql\dataフォルダに貼り付けます。

backupフォルダの中身をdataフォルダに移す

3. 一度MySQLを起動してみる

ここで一度MySQLを起動してみます。

Startボタンを押した後、緑色になっていれば成功です。

MySQLを起動して緑色になっていることを確認


phpMyAdminを見てみましょう。

MySQLのAdminボタン


アクセスには成功しますが、自分で作ったデータベース情報が存在しません。

phpMyAdminで自分で作ったデータベースがないことを確認


次は自分で作ったデータベースを復旧させます。

4. 1で待避させたdataフォルダから必要なファイルをコピーする

1で待避させたdataフォルダから、自分で作成したデータベースのフォルダとibdata1ファイルをコピーして、xampp\mysql\dataの中に貼り付けます。


【画像で補足】

待避させたdataフォルダから、自分で作成したデータベースのフォルダ(cms, cms_demo)とibdata1ファイルをコピーします。

待避させたdataフォルダからコピーする


xampp\mysql\dataに貼り付けます。

ibdata1ファイルは既に存在するので、置き換えます。

dataフォルダのibdata1ファイルを置き換える

5. phpMyAdminを確認して戻っていたら終了

再びphpMyAdminを開いてみます。

更新すると、自分で作成したデータベースが戻っているはずです。

phpMyAdminで自分で作ったデータベースが復旧していることを確認


これで復旧完了です!

おわりに

今回はXAMPPでMySQLを押してもStartできない問題の解決方法を紹介しました。

なぜこの方法で復旧できるのか?を解説しているので、あわせてご覧ください。


解説 前編:MySQLが起動しないエラーの復旧がなぜできる?~用語理解編~

解説 後編:MySQLが起動しないエラーの復旧がなぜできる?~手順解説編~

参考リンク

XAMPPでMySQLが起動しないエラー

xamppのMySQLがshutdownエラーで起動できない、タスクキルでもport変えても直らないのをようやく解決できた話。