エス技研

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

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

Message

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

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

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

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

  関連記事

WP Customer ReviewsでWordPressにオリジナルの口コミサイトを構築

口コミサイトを構築するためのプラグイン。独自フォームによるレビュー、評価点を投稿でき、入力項目の追加もできます。

WordPressのコメントスパム対策 3つのプラグイン

対策なしではコメントスパムがやってきます。その対策方針としてプラグインを提示しながら解説します。いずれかの対策は必須です。

WordPressの一覧ページのテンプレートの種類とファイルの設定

ファイル名に従って一覧ページのテンプレートは選択される。ルールに従ってファイル名を付けることで任意のカテゴリ、タクソノミーごとのテンプレートを指定可能。

Advanced Custom Fieldsのカスタムフィールドの登録上限が max_input_varsに影響する問題の対処方法

Advanced custom Fieldsには登録できるフィールド数に上限があります。php.iniのmax_input_varsによる制限ですが、フィールドグループを分割することで解決できます。

WordPressのサイトマップ生成ツールPS Auto Sitemapの使い方

サイトマップを PS Auto Sitemapで自動生成する方法を説明します。このプラグインは Google用のサイトマップではなく一般ユーザが見るためのサイトマップページを作ります。

WordPressにプラグインを使わず OGP(Open Graph Protocol)の設定方法解説

WordPressに OGP(Open Graph Protocol)をプラグインを使わずに設定する方法の解説。

Export to Textで WordPressを csv出力

WordPressのデータを csv出力する Export to Textの使い方を解説しています。

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

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

Custom Post Type UIでカスタムタクソノミーを設定・バージョン1.4対応解説

カスタムタクソノミーをプラグインCustom Post Type UIを使って設定する方法の解説。バージョンアップにより設定する項目も増え続け、より柔軟な設定が可能に。

WordPressのカテゴリ単位・フォルダ単位でBasic認証を設定する方法

カテゴリ単位でBasic認証を設定する方法の解説。WordPressのカテゴリはフォルダの実態がないですが、実は簡単な方法でプラグインも使わずにBasic認証を設置できます。