ERROR 1034 (HY000): Index for table ‘db’ is corrupt; try to repair it エラーの対処方法

ERROR 1034 (HY000): Index for table 'db' is corrupt; try to repair it というエラーは、MariaDB の mysql.db テーブル(データベースの権限管理を行うシステムテーブル)のインデックスが破損していることを意味します。
この問題を解決するには、mysql.db テーブルを修復する必要があります。

 

sponsor link

解決策

① mysql.db テーブルの修復

以下のコマンドを実行して、mysql.db テーブルを修復する。

USE mysql;
REPAIR TABLE db;

② mysqlcheck を使ってシステムテーブルを修復

MariaDB の mysqlcheck ツールを使用して、すべてのシステムテーブルをチェック&修復できます。
MariaDB サーバーにアクセスして、以下のコマンドを実行してください。

mysqlcheck --repair --databases mysql -u root -p

パスワードを入力すると、自動的に mysql データベースの破損したテーブルが修復されます。

③ FLUSH PRIVILEGES を実行

修復後、権限のリロードを行います。

FLUSH PRIVILEGES;

4. コマンドの再実行

修復後、もう一度 GRANT コマンドを試してください。

GRANT ALL PRIVILEGES ON `DB名`.* TO 'ユーザ名'@'localhost' IDENTIFIED BY 'パスワード';

(※ユーザー名とホスト名はシングルクォート ' で囲む必要があります。)


補足: もし修復できない場合

1. MariaDB を再起動

修復がうまくいかない場合は、MariaDB を再起動してみてください。

sudo systemctl restart mariadb

または

sudo service mariadb restart

2. mysql_upgrade の実行

MariaDB のバージョンを更新した後にシステムテーブルの互換性問題がある場合、mysql_upgrade を実行すると解決することがあります。

mysql_upgrade -u root -p

その後、再度 REPAIR TABLE db; を試してください。


まとめ

  1. REPAIR TABLE db; を実行する
  2. mysqlcheck --repair --databases mysql -u root -p でテーブルを修復する
  3. FLUSH PRIVILEGES; を実行する
  4. GRANT コマンドを再実行する
  5. もし解決しない場合、MariaDB を再起動 or mysql_upgrade を試す

コメント

タイトルとURLをコピーしました