エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


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」に関する記事一覧
 
 

 - WordPress

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

WordPressの Link Managerでブックマーク(リンク)の管理を行う

ウィジェットのブックマーク(リンク)はプラグイン化された「Link Manager」を使って設定します。その使い方の解説です。

Custom Post Type UIでカスタムタクソノミーを設定し編集する方法解説

カスタムタクソノミーを追加、管理するプラグインCustom Post Type UIの使い方の解説。プラグインの解説ではあるものの、カスタムタクソノミーの仕様の解説でもある。

BJ Lazy LoadでWordPressを高速化!SEO効果絶大でPVもアップ!

Lazy Load系の処理を使い画像だけでなくiframe等表示スピードに影響があるものを総合的に対策。入れるだけで高速化するので使わない手はない!

FC2からWordPressに引越しの際のデータ加工方法の解説

FC2からWordPressに引越しの際にデータを加工する必要がありますが、その加工方法の詳細を解説。秀丸の正規表現による置換を使い作業時間も軽減する方法や加工のポイントも解説。

WordPressのおすすめプラグイン記事のまとめ一覧

WordPressプラグインのまとめ。WordPressのプラグイン紹介記事も多くなってきたため紹介コメント付のプラグインまとめ記事を作成しました。

BackWPupでバックアップ・Jobの設定・保存先の情報設定

BackWPupその3。Jobのバックアップファイルの保存先の設定についての解説。

get_categories、get_termsでカテゴリとタクソノミーのターム一覧の編集方法

get_categories()関数やget_terms()関数を使ってタクソノミーのタームを取得し検索処理の部品を作るプログラム作りその解説をしています。

WordPressの記事編集で文字が自動変換される要注意な文字列

記事を編集する際、入力した文字とは違う表示のされ方をする文字、アポストロフィ、ダブルクォート、円マーク、三点リーダ(…)など、その解説と対応方法です。

WordPress csvインポート、エクスポートのプラグイン

WordPressから csvファイルをエクスポート、インポートする方法を紹介しています。

XAMPPのWordPressの更新でFatal error: Maximum execution time of 30 seconds exceededのエラーが発生して失敗する場合の対処方法

XAMPP環境のWordPressアップデート時に「Maximum execution time of 30 seconds exceeded」のエラーが出る。「max_execution_time」を変更して解決する方法の解説。