Learning site for website creation

XAMPP:MySQLが起動しなくなった時の対処法

  • 投稿日:2020年09月25日
  • 更新日:2021年06月14日

XAMPPコントロールパネルからMySQLを開始してもすぐに停止してしまい、以下のエラーメッセージが表示される場合の対処法。

エラーメッセージ

Attempting to start MySQL app…
Status change detected: running
Status change detected: stopped
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を再度起動できるようにすることが目的です。

エラー原因の「mysql」フォルダを退避

「xamppフォルダ」>「mysqlフォルダ」>「dataフォルダ」内の「mysqlフォルダ」をデスクトップなどの別場所に移動してバックアップします。
※解決しなかった時に元に戻せるように別場所に退避します

「mysql」フォルダをバックアップから復帰

「xamppフォルダ」>「mysqlフォルダ」>「backupフォルダ」内の「mysqlフォルダ」をコピーします。

「xamppフォルダ」>「mysqlフォルダ」>「dataフォルダ」内にコピーした「mysqlフォルダ」をペーストします。

これでXAMPPコントロールパネルからMySQLを開始できるようになります。

ただ、rootユーザのパスワード設定や新規で作成したユーザ情報が消えているので再度設定します。

MySQL管理者にパスワード設定

既存のデータベースを復旧する方法

既存データベースフォルダを退避

「xamppフォルダ」>「mysqlフォルダ」>「dataフォルダ」内の「データベース名フォルダ」をデスクトップなどの別場所に移動してバックアップします。

  1. DROP DATABASE example_database; で既存データベース領域を削除
  2. CREATE DATABASE example_database; で同名のデータベース領域を再作成
  3. 再作成したデータベース領域に同じフィールド構成のテーブルを作成
  4. ALTER TABLE example_table DISCARD TABLESPACE; でTABLESPACEを消す
  5. バックアップした「データベース名フォルダ」内から「テーブル名.frm」「テーブル名.ibd」をコピーして上書き
  6. ALTER TABLE example_table IMPORT TABLESPACE;でファイルのTABLESPACEを読み込む