XAMPP環境で WP-DBMANAGERでの復元でDBが壊れる
2018/03/03
WP-DBMANAGERのデータベース復元で不具合が起こった
XAMPP環境で WP-DBMANAGERでのデータベースの復元ができない
ローカルの開発環境として XAMPP環境で WordPressのテスト環境を作っています。
そこで WP-DBMANAGERというデータベースを管理するプラグインを使ってバックアップファイルを作成し、その作成したファイルをもとに WP-DBMANAGERのファイル操作という機能を使って復元を試みたのですが、データベースが壊れて WordPressが動くなるという不具合がありましたので、そのご報告です。
結論、原因は不明。
かつ、WP-DBMANAGERでの復元はできませんでしたので、phpMyAdminを使って復元させる結果となったことを先にお伝えしておきます。
不具合が起こった状況詳細
WordPressのデータを csvファイルをインポートしてデータを追加するという業務がありました。
そのため、その csvインポートを行うための実験として、ローカルの XAMPP環境でまず実験をしようとして実行していました。
環境としては、ローカルの XAMPP環境には phpMyAdminが入っていますが、本番環境のサーバには phpMyAdminが入っていないため、データベースのバックアップ、復元を WP-DBMANAGERを利用して実施する必要があったために、その実験も兼ねていました。
まず、
1.WP-DBMANAGERを使ってデータベースのバックアップ。
2.「csv importer」を使って csvファイルをインポート。
3.phpMyAdminでインポートされたことを確認。
4.インポートの確認ができたので、WP-DBMANAGERを使ってバックアップからデータを復元。
という手順で行いました。
行う予定でした、というべきかもしれませんが、最後の WP-DBMANAGERを使ってデータを復元させる手順のところでエラーが発生しました。
詳細は、WP-DBMANAGERを使っての「ファイル操作」からバックアップされている最新のファイルを選択し「復元」ボタンをクリック。
「’2013年**月**日 @ **:** AM’ のデータベース復元に失敗しました。」
とメッセージが出て、リロードすると
「使用できないテーブルがあります。データベースの修復が必要かもしれません。」
とメッセージが出ます。
そのため、表示にリンクがある「修復」の作業を行ってみても「wp_users テーブルには問題が見つかりませんでした。」と出てくるだけで全く復元はできませんでした。
そして、公開側も管理側も含めて WordPressへのアクセスができなくなりました。
不具合の問題を切り分け原因に迫る
何が問題なのか切り分けるため、WP-DBMANAGERの「復元」で使っていた SQLファイルを phpMyAdminでインポートしてみたところ何の問題もなくインポートされ、元の環境が復元されました。
また、同じファイルを使って、XAMPPではない WordPressのテスト環境で実験をしてみたところ、こちらも問題なく復元されました。
(環境が違いますので、WordPressにアクセスすると変な画面表示にはなりましたが、データベースには問題なくデータは登録されていました。)
さらに、再びローカルの XAMPP環境に戻り検証を続けました。
csvでデータを取り込んだテーブルが「wp-posts」「wp-postmeta」の 2テーブルだったことから、復元に使う SQL文のファイルをこの 2テーブルだけのものに変更し、「復元」を実行してみたところ、エラーなく取り込むことはできたものの、テーブルの中には文字化けした文字列が取り込まれており、表示ももちろん文字化けしていました。
そのため、今度は 2テーブルだけにしたファイルの文字コードを「UTF-8」から「Shift-JIS」に変えて「復元」を実行してみたところ、今度はざっと見た感じでは問題なく取り込めたようでした。
以上のことから、今回の問題は、Windows+XAMPP環境に起因する文字コードに絡む問題が原因で「復元」の処理がうまくいかないのではないか、と考えられます。
ただ最終的な解決には至らず
ただ、今回復元させる 2テーブルだけであれば問題ありませんでしたが、全テールが入ったファイルの文字コードを「UTF-8」から「Shift-JIS」に変更して同じように処理を実行してみたところ、処理はエラーなく終わることはできたものの、正常にデータは取り込めておらず、問題が解決したとは言えない状況でした。
文字コードを変換する際に変更できない文字も入っていることも原因だった可能性もありますが、詳細は不明です。
ファイルをテーブル一つずつに分け、一つずつ復元の確認をしていくことで原因となるテーブルを特定することも可能だとも考えられますが、今回はそこまでの時間を費やすことはできずに詳細な原因追究をすることは断念することにしました。
そのため、この件に関しては詳細な原因は分からず、具体的な解決策は不明です。
ただ、この問題が発生するのは、XAMPP環境に依存する可能性が高いことと、phpMyAdminでテーブル復元を行えばいい、という対処療法的な対応方法は確認できたことで良しとしました。
どなたか、明確な原因がお分かりになる方がいらっしゃいましたら、お教えいただけますと幸いです。
ちなみに、csvファイルをインポートする「csv importer」に関連する記事は、それぞれ下記を参考にしてください。
WordPress csvインポート、エクスポートのプラグイン
Export to Textで WordPressを csv出力
CSV Importerで WordPressにcsvを取込む
WP-DBMANAGERってなに?
必要ないかもしれませんが、WP-DBMANAGERの説明をします。
WP-DBMANAGERは、WordPressのデータベースを操作することができ、自動的にバックアップもとってくっれう便利なプラグインです。
具体的には下記の機能があります。
・データベースの情報一覧表示
・データベースのバックアップ
・ファイルからの SQLの操作
・DBの最適化
・データベースの復元
・テーブル・データの削除(TRUNCATE TABLE、DROP TABLE)
・SQLクリエの実行
詳しくは、下記にも記事を書いていますので参考にしてください。
WordPress データベースを管理するための強い味方のプラグイン WP-DBMANAGER
WordPressのプラグイン WP-DBMANAGERを使って PHP、CakePHP、baserCMSなどで作った Webサービスのデータベースも自動バックアップ
XAMPPってなに?
ついでに、XAMPPに関しても下記に記事を書いていますので参考にしてください。
PHPを勉強するための環境を構築するにはXAMPPが最適
ローカル環境の XAMPPからメールを送信できるように設定する
XAMPPの Apacheが起動しなくなった場合の対処方法
2014.07.03 追記
WP-DBMANAGERは、データベースの管理プラグインですが、バックアップをメインの目的に考える場合は、「BackWPup」というバックアッププラグインとしてはメジャーなプラグインがありますので、そちらも参考にしてみてください。
「BackWPupでWordPressのDBもファイルもバックアップ」にどこよりも詳しく 9記事にわたって書きました。その中には簡単に設定する記事もありますので、参考にしてみてください。
XAMPPの関連記事
WindowsのXAMPPのPHPではstrptimeは使用不可。代替はdate_parse_from_formatを使うXAMPP本体や PHPのバージョンアップをせずにもう一つXAMPPをインストールして複数の環境を共存させる方法
XAMPPとは?パソコンにローカル LAMP環境を簡単に設置する方法を詳細解説
XAMPPにVirtualHostを設定しドメイン、ドキュメントルートを設置する方法
XAMPPのApacheが起動しない!ポート番号の変更でバッティングの解消方法
MySQLのタイムゾーン(mysql_tzinfo_to_sql)の設定方法・XAMPP環境の解説も
XAMPPのWordPressの更新でFatal error: Maximum execution time of 30 seconds exceededのエラーが発生して失敗する場合の対処方法
XAMPP環境で WP-DBMANAGERでの復元でDBが壊れる
XAMPPの Apacheが起動しなくなった場合の対処方法
XAMPP環境(ローカル環境)の sendmailからPHPメールを送信する設定方法
その他の「xampp」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
WordPress環境を引越し、複製、バックアップ、リストアの手順解説
WordPress環境を引っ越し、複製、バックアップの手順書です。本番から開発、開発から本番、バックアップからのリストアなど環境を移す時の方法と手順の解説。
-
-
Multi RatingでWordPressの口コミサイトを構築
口コミの評価点を投稿する機能に特化。評価点を複数設定することができ、投稿後の評価点を編集することができる数少ないプラグイン。日本語にも対応。おススメ。
-
-
WordPressのサイドバー(サイドナビ)はウィジェットで編集
サイドバー(サイドナビ)を編集するウィジェットの利用方法の解説です。カテゴリ一覧、アーカイブ、リンク集などを設定する方法を解説しています。
-
-
WordPressのおすすめの確認画面付きお問い合わせフォームプラグイン・MW WP Form
MW WP Formは確認画面が付いているオススメのフォームプラグインです。企業サイトを CMSとして構築する際にも利用できる実力派です。
-
-
WordPressプログラム全体で定数や変数を利用する場合の設定方法
WordPressで関数を追加するときなど、全体で同じ変数を使いたいと思う場面の対処方法です。変数を記述する関数はfunctions.php、wp-config.phpのいずれか。
-
-
WordPressの送信メールが協定世界時(UTC・グリニッジ標準時)の問題対応
WordPressから送信されてくるメールが9時間ずれている。その不具合の解消方法と根本原因の解説です。date_default_timezone_set();の設定を変更で対応できます。
-
-
WordPressの functions.phpがある場所
WordPressのカスタマイズには大切な functions.phpですが、最初はその場所がどこなのか分かりませんのでその説明をしています。
-
-
ショートコード+ウィジェットでサイドバーに人気記事を表示させる方法
WordPressのサイドナビゲーションに人気記事を編集する方法です。プラグインを使わずウィジェットにショートコードで任意のPostIDを指定することで編集する方法です。
-
-
Advanced custom Fieldsのフィールドグループを簡単に複製する方法
Advanced custom Fieldsのフィールドグループの複製の方法の解説。XMLのExport、インポートする機能を利用して複製します。
-
-
Custom Post Type UIでカスタムタクソノミーを設定・バージョン1.4対応解説
カスタムタクソノミーをプラグインCustom Post Type UIを使って設定する方法の解説。バージョンアップにより設定する項目も増え続け、より柔軟な設定が可能に。