XAMPP(ザンプ)でデータベース接続確立エラーが突然出た...XAMPPの再インストールとデータベースの修復方法。

XAMPP再インストール_eyecatch

XAMPP(ザンプ)を使ってローカル環境に構築したWordpressにログインしようとしたところ、データベース接続確立エラーが出ました。

先日まで普通に使えており、特に何もしていないのに突然エラーで使用不可能になりました…管理画面どころかphpMyAdminにもログインできません。

調べたところ、データベースが何らかの原因で破損していたようです。
なんとか無事に復旧できましたので、XAMPPの再インストールとデータベースの復元方法をまとめてみました。

僕はデータベースにそれほど詳しくないので完全に自己流です。
再インストール→データベースの上書きという力技ですので予めご了承下さい。

XAMPPでデータベース接続確立エラーが出た時の対処法

XAMPPでデータベース接続確立エラーが出た時の状況は以下です。

  • Windows10にXAMPPをインストール。
  • XAMPP内にWordpressをインストール。
  • ある日突然データベース接続確立エラーが出た。
  • phpMyAdminによるデータベースのバックアップは無し。

これから紹介する内容は環境によっては上手くいかないかもしれません。
一度目を通してから必要な箇所を試していただければと思います。

エラーの状況と試したこと

先日いつものようにXAMPPを立ち上げ、Wordpressにログインしようとしたところデータベース接続確立エラーが出ました。

XAMPP再インストール_001

XAMPPでのデータベース接続確立エラー画面

ずらずら~とWarningが出ています...wp-db.php内でエラーが発生している模様。
「MySQL server has gone away:MySQLサーバーがなくなりました」
とあります。

念のためwp-config.phpを確認してみるもユーザー名もパスワードも正しく記述されています。そもそもXAMPP内のファイルは一切編集していないので、変わっているはずもありません。

ここから以下のようなことを色々試したのですが一向に解決できません。

試したこと

  • XAMPPやPCの再起動
  • wp-config.phpの確認
  • localhostを127.0.0.1に変更
  • MySQLのポート番号の確認&変更
  • xampp/mysql/data/ibdata1などの削除
XAMPP再インストール_002

MySQLが起動できない

そしてついにXAMPPのMySQLが起動しなくなりました…
Startを押すと以下のエラーがでます。

【原文】
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イベントビューア
さらにヘルプが必要な場合は、これをコピーして投稿してください
フォーラムのログウィンドウ全体

Startを押すとすぐに停止してしまいます。
調べたところデータベースの破損の可能性が高いとのこと...

で、今回考えられる原因は

  • Windowsアップデート
  • XAMPPを終了しないままシャットダウン

この2つくらいです。

そういえば以前のPCにもXAMPPをインストールしており、突如このエラーでMySQLが起動できなくなったのでWindowsアップデートが原因の可能性が高いのかも...

PC内にデータベースを構築しているのでパスや権限あたりの設定が勝手に変更されてしまうのかもしれません。

解決しようとしたのですが、エラーの内容が曖昧すぎて良く分かりません。
そこで思い切ってXAMPPを再インストールしたところあっさり解決できました。

スポンサーリンク

XAMPPのバックアップに必要なファイル

XAMPPをアンインストールしてしまうとインストールしたフォルダ内の全てのファイルが削除されてしまうので、まずバックアップを取る作業が必要です。

バックアップに必要なファイルは数種類ですが、アンインストール後は取り返しがつきませんので、xamppフォルダ丸ごとをバックアップとしてどこかにコピーしておくと一番安心です。

XAMPP再インストール_003

xamppフォルダ丸ごとをバックアップとして残す

インストール時に変更していなければ、XAMPPがインストールされるのは「xampp」という名前のフォルダです。
これをどこかにバックアップとして丸ごとコピーしておきましょう。

XAMPPフォルダ内の以下のファイルが特に重要です。

  • htdocs:公開フォルダ
  • mysql:XAMPPで使用するデータベース
  • phpMyAdmin:MySQLの管理ツール
  • apache:サーバーソフト
  • php:phpソフト

htdocsやmysqlなどの自分で編集したオリジナルファイルが含まれるものさえバックアップしておけば最悪何とかなります。

XAMPP再インストール_004

今回使用するのはこの3ファイル

今回使用したのは「htdocs」「mysql」「phpMyAdmin」の3ファイルだけですが、後々必要になる可能性もあるのでやはり「xampp」フォルダ丸ごとをコピーするのがオススメです。

XAMPPの再インストール

バックアップを取ったらあとはパソコンからアンインストールするだけです。

XAMPP再インストール_005

xampp内のuninstall.exeでアンインストールができる

xamppフォルダ内のuninstall.exeを実行すればアンインストールが可能です。
もちろんパソコンのプログラム一覧からアンインストールしてもOK!

XAMPP再インストール_006

アンインストールの確認

Do you want to uninstall XAMPP and all of its modules?

XAMPPとそのすべてのモジュールをアンインストールしますか?
と聞かれます。ここでYesを押すとアンインストールが実行されます。
この先で✕を押しても止められませんのでバックアップを最終確認しましょう。

XAMPP再インストール_007

htdocsフォルダを削除するかの確認

htdocsフォルダも削除しますか?と聞かれます。
XAMPPのインストールフォルダは空でないとダメなので、消します。

アンインストール終了後、xamppフォルダ内に何かフォルダが残っていないか確認しましょう。僕の場合はなぜかphpMyAdminフォルダが残っていました。

あとはXAMPPのインストーラーをダウンロードして実行すればOK!

XAMPP再インストール_008

再インストール後MySQLが無事に起動した

XAMPPを再インストールしたところMySQLが無事に起動するようになりました。

続いて、バックアップからデータとデータベースの復旧作業を行います。

スポンサーリンク

XAMPPデータベースの復旧作業

ここからは先ほどバックアップとしてコピーしておいた「xampp」フォルダ内から新しくインストールしたXAMPPのインストールフォルダ「xampp」に必要なファイルを上書き保存していきます。

間違わないように気を付けてね!

同名のファイル名でややこしい方はバックアップしたフォルダを別の名前にしておきましょう。

XAMPPデータベース接続確立エラー_009

インストールした新xamppフォルダに上書き保存

「htdocs」と「phpMyAdmin」をインストールしたxampp内に上書き保存します。

この状態でxamppを起動してWordpressのログイン画面にアクセスしてみます。

XAMPPデータベース接続確立エラー_010

別のデータベース接続確立エラーが発生

別のエラーが発生しました。

Access denied for user 'root'@'localhost' (using password:YES)

ユーザー 'root' @ 'localhost'のアクセスが拒否されました(パスワードを使用)

XAMPPのデータベースにパスワードを設定している場合、何らかの理由でこれが変更?されているみたいです。
phpMyAdminにも以前のパスワードでログインできません。

そこで以前まで使用していたパスワードを再設定します。
(wp-config.php内で確認可)

データベースパスワードの再設定

データベースパスワードの設定はXAMPPのコントロール画面にあるShellからコマンドベースで行います。

XAMPPデータベース接続確立エラー_011

データベースパスワードの再設定

XAMPPでApacheとMySQLをstartで起動した後、コマンドを実行して下さい。
実行するコマンドは以下です。

cd mysql\bin
mysql -u root
set password=password('新規パスワード');
exit

新規設定コマンドでOKでした。

こちらも別の記事に詳しいやり方をまとめています。

関連記事

XAMPP(ザンプ)のセキュリティ設定方法!データベースのパスワード設定からIPアドレスの制限まで。
「MySQL(MariaDB)にパスワードを設定する」という項目にジャンプします。

XAMPPデータベース接続確立エラー_012

phpMyAdminにログインできるようになった

パスワードを再設定すればようやくphpMyAdminにログインできるようになります。

パスワードを設定していなかった場合は分かりません…そのままログインできる?

データベースの復元

再度Wordpressのログイン画面にアクセスしてみます。

XAMPPデータベース接続確立エラー_013

データベース選択不可のエラー

また別のエラーが出ました。

Unknown database 'データベース名'

不明なデータベース'データベース名'という内容です。

現時点で「htdocs」と「phpMyAdmin」だけを戻した状態でデータベースが存在しない状態となっているためこのエラーが出ます。

早速バックアップファイルからデータベースを戻しましょう。

XAMPPデータベース接続確立エラー_014

xampp > mysql > data内にデータベースがある

XAMPPのデータベースの場所は以下です。

xampp > mysql > data > データベース名のフォルダ

今回は「wpdb_01」という名前のファイルが以前からWordpressで使用していたデータベース名です。

このデータベース(僕はwpdb_01)をインストールしたxampp内のmysql>data内にコピーします。

Wordpressの再設定-失敗

データベースも元の場所に戻ったので再度Wordpressのログイン画面にアクセスしてみます。

XAMPPデータベース接続確立エラー_015

Wordpressのようこその画面が出た

おお!これは成功しそうな感じ!
ユーザー名生きてるじゃん!

XAMPPデータベース接続確立エラー_016

データベースエラーが発生して進めない

はい。そんな簡単にはいきません。
完全にデータベースが破損しているようです…

phpMyAdminにはデータベースの修復機能がありますのでこれを試してみます。

phpMyAdminでテーブルの修復を行う

やり方は以下でとても簡単です。

  1. phpMyAdminにログインする
  2. データベースを選択する
  3. 修復したいテーブルを選択する
  4. メニューから修復をクリックする

REPAIR TABLEというSQLコマンドを選択したテーブルに実行してくれます。
Wordpressにも同機能があるようです。

照合順序が使用中は破損の可能性が高い

phpMyAdminにログインしてデータベースを選択するとテーブルの一覧が出ます。
ここで照合順序が「使用中」となっていればデータベースが破損している可能性が高いらしいです。
正常な場合は「utf8mb4_unicode_ci」などと照合順が表示されます。

XAMPPデータベース接続確立エラー_017

テーブルが使用中になっている

えー、全部のテーブルが使用中です。お亡くなりになっている可能性が高いです。
が、ダメもとでやってみましょう。

XAMPPデータベース接続確立エラー_018

テーブルを修復するを選択

データベース内の全テーブルをチェックし...
「チェックしたものを:」とあるプルダウンをクリック。
プルダウンから「テーブルを修復する」を選びます。
画面右下の方にある実行をクリックでOK!

XAMPPデータベース接続確立エラー_019

repair statusがOperation failedとなって失敗する

コマンド自体は実行されましたが、全テーブルリペアエラーとなりました。
これで治ったらラッキーですね…

データベースのバックアップがあるならphpMyAdminからインポートで治る可能性が高いです。

僕の場合所詮テスト環境と思いバックアップは取っていませんでしたので地獄ですw

データベースを作り直す

調べていたところテーブルの修復がコマンドで実行できない場合は、テーブルを同名で作り直すのが良いそうです。
データベースに詳しくない自分がゴリゴリやっても無駄なのは目に見えています。

1個づつ作ってられないので全削除→新規作成という力技を試します。

再度、下記のXAMPP内のデータベースまでアクセスします。

xampp > mysql > data > データベース名のフォルダ

そして拡張子が「.frm」のFRMファイル。そして「.ibd」のIBDファイルを全削除します。

XAMPPデータベース接続確立エラー_020

データベース内のdb.opt以外を全削除

念のためインストール時に作成される「db.opt」は残しました。

削除後はXAMPPのApacheとMySQLを再起動します。

そして再々再度くらい?ログイン画面にアクセス。

XAMPPデータベース接続確立エラー_021

パスワードは以前と同じものに合わせる

すると先ほどとは少し違い、ユーザー名とパスワードの入力欄があります。
ユーザー名およびパスワードは以前使用していたものを入力しましょう。
そして進んでみる…

XAMPPデータベース接続確立エラー_022

インストールに成功した

お!いけた。
ちなみにXAMPPを再起動していないと先ほどと同じようにエラー画面で止まります。

いつも通りログインしてみます。
これでダメなら1からまたサイト作った方が早いw

XAMPPデータベース接続確立エラー_023

記事内容もCSSも復活した

はい!戻りました!
良く分からないのでかなりの力技でしたが無事にまたXAMPPでWordpressが使えるようになりました・w・

XAMPPデータベース接続確立エラー_024

ここで少し欲を出してデータベースをバックアップファイルから戻してみました。
(バックアップからxampp内にコピー)

テーマが使用しているデータベースやプラグインが使用しているデータベースでは変わらずデータベースエラーが発生してしまいました…
あくまで削除→新規作成という過程を踏まないと治らないようです。

そこでデータベースを削除してから、テーマやプラグインを再インストールしたり有効化してみたところうまく治りました。

まとめ

XAMPP内にインストールしたWordpressで突然データベース接続確立エラーが発生してしまった時の解決策をご紹介してみました。
もしもWindowsアップデートでXAMPPがデータベース接続エラーになったりMySQLが立ち上がらないようになるのであればなかなか難儀ですね…

あくまでも僕の環境で上手くいっただけであって上手くいかないかも…
バックアップを取っていなくてデータベースが破損してしまった場合の最終手段としてご検討いただけますと幸いです。

XAMPPでもデータベースのバックアップは非常に大切です( ;∀;)

-ソフト_サービス

ありがとうございました!
良かったらシェアしてネ・w・
当サイトはピンバックを受け付けます。

© 2022 ソロ学