WordPressでDB(MySQL)のテーブルを修復する方法

  • 投稿 : 2014-06-07
  • 更新 : 2014-11-18
記事は表示されて問題ない感じなのですが、StatPress、Wordpress Popular Postsとかのデータが消えてるようでおかしな状態になってしまいました。どうもDBがおかしいようです。

バックアップから戻そうと思ったのですが、その前に修復してみたらどうかな?と思ったのでそうしてみたら無事治りました。原因は不明です。データも消えてはいませんでした。MySQLのテーブルって破損することがあるんでしょうかという疑問だけ残りました。

以下、DB(MySQL)のテーブルを修復する方法です。
DBの作業をする前は、現状のDBのバックアップを取っておいたほうがよいと思います。

WordPressのプラグインを使う方法

Wordpressの管理画面にログインできるのなら、プラグインを使うのが簡単かと思います。

使用するプラグイン

WP-DBManager
WordPress › WP-DBManager « WordPress Plugins

使い方


「Repair DB」を選択して、修復したいテーブルを選択して、「Repair」ボタンを押すと修復されます。
修復したいテーブルがわからない場合は、すべて選択で問題ないはずです。

phpMyAdminとやってることは同じだと思われます。

phpMyAdminを使う方法


修復したいテーブルのチェックボックスをチェックして、「テーブルを修復する」を選択すれば修復されます。
どのテーブルを修復したらよいかわからない場合は、すべてを選んでも問題ないかと思います。

実際に行われているのは、「REPAIR TABLE テーブル名」と同じだと思われます。

■参考
WordPressのDBのwp_postsがクラッシュした時の修復方法 | コリス

SQLを使う方法

CHECK TABLE テーブル名
テーブルの状態を確認する
破損していれば「crashed」と表示されるかと思います。

REPAIR TABLE テーブル名
テーブルを修復する

MySQLコンソールか、phpMyAdminのSQLのところで実行させれば動作します。

※テーブル名のところは複数指定可能です。
REPAIR TABLE  `wp_links` ,`wp_options` ,`wp_postmeta` ,`wp_posts`


■参考
WordPress の投稿・固定ページが全て消えた!?:解決 | ゆめとちぼーとげんじつと
WordPress : データベース破損から復旧しました | Hinemosu
MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.5.2.3 CHECK TABLE 構文
MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.5.2.6 REPAIR TABLE 構文

コマンドを使う方法

・チェック
$ mysqlcheck -c --all-databases -uユーザー名 -pパスワード
・修復
$ mysqlcheck -r --all-databases -uユーザー名 -pパスワード

※MYSQLが別サーバーの時は、 -h host_nameでそのホストを指定します。
■参考
(MySQL) テーブルが壊れたかなと思ったら、mysqlcheck コマンドを実行しよう - jitsu102の日記
MySQL :: MySQL 5.1 リファレンスマニュアル :: 7.10 mysqlcheck — テーブル メンテナンスと修復プログラム

スポンサーリンク