InnoDB: Error: Table “mysql”.”innodb_table_stats” not found. が出る件

最近HomebrewでインストールしたMySQLの調子が悪いので調べてみました。

プロセスをチェックして、ログのパスをチェックします。

$ ps auxww | grep mysql
/usr/local/Cellar/mysql/5.6.24/bin/mysqld --basedir=/usr/local/Cellar/mysql/5.6.24 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql/5.6.24/lib/plugin --bind-address=127.0.0.1 --log-error=/usr/local/var/mysql/hoge.local.err --pid-file=/usr/local/var/mysql/hoge.local.pid

**–log-error=/usr/local/var/mysql/hoge.local.err **

にログが出ているようなのでログを確認してみます。

less /usr/local/var/mysql/hoge.local.err

以下のようなログが出ていました。

InnoDB: Error: Table "mysql"."innodb_table_stats" not found.
InnoDB: Error: Fetch of persistent statistics requested for table "org001"."eip_t_message_read" but the required system tables mysql.innodb_table_stats and mysql.innodb_index_stats are not present or have unexpected structure. Using transient stats instead.

どうやらこれが原因のようです。

  • http://sawara.me/mysql/2204/
  • https://14code.com/blog/20130625_504
  • http://www.bunkei-programmer.net/entry/2014/08/25/230357
mysql -u root -p mysql

mysql> drop table innodb_index_stats;
ERROR 1051 (42S02): Unknown table 'mysql.innodb_index_stats'
mysql> drop table innodb_table_stats;
ERROR 1051 (42S02): Unknown table 'mysql.innodb_table_stats'
mysql> drop table slave_master_info;
ERROR 1051 (42S02): Unknown table 'mysql.slave_master_info'
mysql> drop table slave_relay_log_info;
ERROR 1051 (42S02): Unknown table 'mysql.slave_relay_log_info'
mysql> drop table slave_worker_info;
ERROR 1051 (42S02): Unknown table 'mysql.slave_worker_info'

テーブルいないようです。

.frm と .ibd ファイルを消すのですがパスは最初のプロセスにある

–datadir=/usr/local/var/mysql

をもとに探します。

/usr/local/var/mysql/mysql

の中に .ibd ファイルだけあったので削除してMySQLを再起動してみました。