2026年5月20日
2026年5月20日
データベースのテーブルが破損した場合の修復方法【WordPress DB修復】
はじめに
WordPressで「データベースエラー: 〇〇」というメッセージが表示されたり、管理画面の一部が正常に動作しなかったりする場合、MySQLのテーブルが破損している可能性があります。テーブルの破損は突然の電源断・ディスク満杯・MySQLの強制停止などで起きます。
症状・確認
テーブル破損の特徴:
- 「データベースエラー: テーブル '\\\*' は存在しません」のようなメッセージ
- 特定のページや機能だけが404またはエラーになる
- 管理画面の投稿一覧が表示されない
- WP-CLIで
wp db checkを実行するとエラーが出る
解決手順
ステップ1:WordPress組み込みの修復機能を使う(最も簡単)
1. wp-config.phpに以下を追加:
define('WP_ALLOW_REPAIR', true);
2. ブラウザでhttps://example.com/wp-admin/maint/repair.phpにアクセス
3. 「データベースを修復」または「データベースを修復して最適化」をクリック
4. 完了後、wp-config.phpからdefine('WP_ALLOW_REPAIR', true);を必ず削除
ステップ2:WP-CLIでDB確認・修復
SSH接続できる環境では:
# DB全体のチェック
wp db check
# 修復
wp db repair
# 特定のテーブルだけチェック
wp db check --tables=wp_posts,wp_options
# 最適化(OPTIMIZE TABLE)
wp db optimize
ステップ3:phpMyAdminで個別テーブルを修復
1. phpMyAdminにログイン
2. 対象のWordPressデータベースを選択
3. 修復したいテーブルにチェックを入れる(または「全て選択」)
4. 「選択したものを」のドロップダウンで「テーブルを修復する」を選択
5. 実行
-- phpMyAdminのSQLタブで実行することも可能
REPAIR TABLE wp_posts;
REPAIR TABLE wp_options;
REPAIR TABLE wp_postmeta;
REPAIR TABLE wp_comments;
REPAIR TABLE wp_commentmeta;
REPAIR TABLE wp_terms;
REPAIR TABLE wp_term_relationships;
REPAIR TABLE wp_usermeta;
REPAIR TABLE wp_users;
ステップ4:InnoDBテーブルの修復
WordPressはデフォルトでInnoDB形式を使います。InnoDBの場合、REPAIR TABLEは使えないことがあります:
-- InnoDBの場合は ALTER TABLE で修復を試みる
ALTER TABLE wp_posts ENGINE=InnoDB;
ALTER TABLE wp_options ENGINE=InnoDB;
-- または個別最適化
OPTIMIZE TABLE wp_posts;
ステップ5:バックアップから復元
修復が不可能な場合は、バックアップから復元するのが最確実な方法です:
1. phpMyAdminで現在のDBをエクスポート(保険として)
2. 最新の正常なバックアップをインポート
WordPressのバックアッププラグイン(UpdraftPlus・BackWPup等)でバックアップがある場合は、そこから復元します。
MyISAMとInnoDBの違い
-- テーブルのエンジンを確認
SHOW TABLE STATUS FROM `wordpress_db`;
| エンジン | 修復方法 |
|---------|---------|
| MyISAM | REPAIR TABLE が有効 |
| InnoDB | ALTER TABLE ENGINE=InnoDB または バックアップ復元 |
InnoDBがクラッシュした場合(上級者向け)
# /etc/mysql/mysql.conf.d/mysqld.cnf に追加(強制修復モード)
[mysqld]
innodb_force_recovery = 1 # 1〜6の値(大きいほど強制度が高い)
innodb_force_recoveryの値は1から試し、DBに接続できたらデータをエクスポートして新しいDBに移行します。確認後は設定を元に戻します。
まとめ
テーブル破損の修復は①WordPress組み込みのrepair.php→②WP-CLIのwp db repair→③phpMyAdminでのREPAIR TABLE→④バックアップからの復元の順に試します。今後の予防のために定期的なバックアップとUpdraftPlusなどの自動バックアッププラグインの導入を強く推奨します。
関連記事: