InnoDB: Error: table `mysql`.`innodb_table_stats` does not exist in the InnoDB internal
这个原因很明显 ,是mysql库的innodb_table_stats表损坏了。
再点击 mysql的innodb_index_stats 表,同样损坏。
解决方法:
损坏了,当然就是删除重补回来。
1,删除表,进入mysql库,把innodb前缀的表文件删除。
[root@AY140311174146476cc0Z mysql]# pwd /usr/local/mysql/data/mysql [root@AY140311174146476cc0Z mysql]# rm -f innodb_*
2,重新执行sql文件语句。当然语句来自安装包。
具体路径,如5.6为例:mysql-5.6.19/scripts/mysql_system_tables.sql
语句贴出来吧
CREATE TABLE IF NOT EXISTS innodb_index_stats (
database_name VARCHAR(64) NOT NULL,
table_name VARCHAR(64) NOT NULL,
index_name VARCHAR(64) NOT NULL,
last_update TIMESTAMP NOT NULL NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
/* there are at least:
stat_name='size'
stat_name='n_leaf_pages'
stat_name='n_diff_pfx%' */
stat_name VARCHAR(64) NOT NULL,
stat_value BIGINT UNSIGNED NOT NULL,
sample_size BIGINT UNSIGNED,
stat_description VARCHAR(1024) NOT NULL,
PRIMARY KEY (database_name, table_name, index_name, stat_name)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0
CREATE TABLE IF NOT EXISTS innodb_table_stats (
database_name VARCHAR(64) NOT NULL,
table_name VARCHAR(64) NOT NULL,
last_update TIMESTAMP NOT NULL NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
n_rows BIGINT UNSIGNED NOT NULL,
clustered_index_size BIGINT UNSIGNED NOT NULL,
sum_of_other_index_sizes BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (database_name, table_name)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0
然后,再查询相关的innodb表。看下是否还有错误 。
这个错误到此解决了。