XAMPPを使っていて、時々MySQL(MariaDB)が壊れて起動しなくなってしまうので、その修復方法のメモ。
XAMPP Control Panel の MySQL が緑色に点灯せず、PID(s) や Port(s) もブランクのまま、Startボタンが表示されていて、下のステータスには、こんな感じの赤い行が表示される(Apacheは動いている)。
16:57:37 [mysql] Attempting to start MySQL app...
16:57:38 [mysql] Status change detected: running
16:57:39 [mysql] Status change detected: stopped
16:57:39 [mysql] Error: MySQL shutdown unexpectedly.
16:57:39 [mysql] This may be due to a blocked port, missing dependencies,
16:57:39 [mysql] improper privileges, a crash, or a shutdown by another method.
16:57:39 [mysql] Press the Logs button to view error logs and check
16:57:39 [mysql] the Windows Event Viewer for more clues
16:57:39 [mysql] If you need more help, copy and post this
16:57:39 [mysql] entire log window on the forums
/xampp/mysql/data/mysql_error.log を見ると、エラーの起きた時間あたりにこんな行があった。
2020-08-27 16:57:37 0 [ERROR] mysqld.exe: Aria recovery failed. Please run aria_chk -r on all Aria tables and delete all aria_log.######## files
Aria FAQ に Remove logs and run aria_chk on your *.MAI files という荒技が書いてあったのでやってみる。
aria_chk.exe は \xampp\mysql\bin に、*.MAIは \xampp\mysql\data\mysql にある
cd \xampp\mysql\data\mysql
..\..\bin\aria_chk -r *.mai
cd ..
del aria_log.????????
これで XAMPP Control Panel の MySQL の Start を押すと、
17:14:09 [mysql] Attempting to start MySQL app...
17:14:09 [mysql] Status change detected: running
ダメだった場合は、さらに
del *.00????
del *.info
del *.index
を試してみる。del *.* でもいいかもしれない。(つまり \xampp\mysql\data のファイルを消す(サブフォルダは残す))。
私の場合には、Windowsのリブート後に起きることが多い。DBのatomicな更新の途中で強制終了が起きると、一貫性が保持できなくなってしまうのだろうか。
コメントする