目次
まず僕はWindowsを使用していて、開発にはXAMPPが必須です。
それにも関わらず今でも頻繁にXAMPPでエラーが起きてしまいます(笑)
ですがこの方法を試してからエラーが起きてもすぐに対応できるようになりました!
XAMPPを使い始めた頃は解決に時間がかかってしまった事例を紹介していきたいと思います。とても簡単なのでぜひやってみてください。
エラー内容
XAMPP終了時にエラーが出る
普段PCをシャットダウンする前に「Apache」と「MySQL」を「Stop」をクリックして「Quit」でXAMPPを終了してます。
いつものようにXAMPPを終了しようとしたら以下の画像のようなエラー文が出てきてしまいました。
ここでは「OK」か「バツマーク」をクリックするしかなかったのですが、押すと次の画像のように(応答なし)になってしまいます。
このまま待っていても特に変わらないので、「タスクマネージャー」からXAMPPを選択してコントロールパネルを閉じてみました。
これが毎回起きてしまうとめんどくさいな思ったので解決方法を探してみました!
調べてみるとやはり同じことが起きている方が多く解決することができました!
解決方法
何をするかというと「権限を実行ユーザーに与える」と解決できます!
ステップ1
XAMPP Control Panelのファイルの場所を開きます。
ステップ2
xampp-control.exeで右クリックで「プロパティを」選択します。
ステップ3
プロパティが開かれたら「互換性」のタブに移行して「設定」内の「管理者としてこのプログラムを実行する」にチェックを入れます。そしてOK。
設定は以上になります。
管理者として実行できているか確かめます。
XAMPPのコントロールパネルを開きましょう。
Modules Serviceがに赤いチェックが入ってるのが最初と違いますよね。
ここにチェックが入っていれば管理者として実行できている印です!
「Quit」を押してみたらさっきまで出ていたエラー文が表示されません!
これにて「XAMPP終了時にエラーが出る」問題は解決しました。簡単ですね!
XAMPPでMySQLが起動しない
ここからは「XAMPPでMySQLが起動しない」問題と戦います!
XAMPPを終了する際にXAMPP Control Panelから「Apache」や「MySQL」を「STOP」を押さずに、「Quit」などでいきなりコントロールパネルを終了させると、MySQLに不具合が生じる問題です。
これはXAMPPを使用し始めてからなるべく気をつけていたつもりでしたが、ついに発生してしまいました。
原因
今回の原因は結局のところよくわかっていません。
XAMPPを終了する際にXAMPP Control Panelから「Apache」や「MySQL」を「STOP」を押さずに、「Quit」などでいきなりコントロールパネルを終了させる。行為が原因なのか他に原因があるのか、僕も頭を悩ましています。
SQLに詳しくないので、思わぬところから勉強する範囲が増えました(笑)
試したこと
・コントロールパネルを再起動する
・PCを再起動する
・XAMPPを何個も開いていないか確認する
以上のことは真っ先に試しましたが、特に変化はありませんでした。
解決方法
ステップ1
コントロールパネルのMySQL→Config→<Browse>→dataの順に開きます。
dataフォルダは後々必要になってくるので必ずバックアップを取っておいてください。
バックアップを取れたことを確認してからmysql\data内の以下のフォルダとファイルを削除します。
削除するデータまとめ
・mysql
・performance_schema
・phpmyadmin
・test
・自分が作成したデータベース(ローカル環境)以外のすべてのファイル(ib_logfile0、ib_logfile1)など
上記データを削除できたらmysql\backup内の中身をすべてコピーしてmysql\dataにペーストしてください。
ここで先程バックアップを取ったdata内にある「ibdata1」というファイルだけをコピーしてmysql\data内の「ibdata1」というファイルに上書きしてください。
この「ibdata1」はMySQLのトランザクションセーフのストレージエンジンらしく、これを上書きしないと意味がないようです。設定は以上になります。
まとめ
この解決方法を見つけるまで僕はとても苦戦しました。
XAMPPの再インストールだけは避けたかったので解決方法に出会えてよかったです!
突然MySQLが起動しなくなった場合はぜひ試してみてください。
1人でも再インストールしなくて済むようにお助けできればと願っています。
バックアップなどに注意して作業してみてください。
ありがとうございました。