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などの自動バックアッププラグインの導入を強く推奨します。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ