千家信息网

Mysql innodb错误解决 InnoDB: Error: table `mysql`.`innodb_table_stats`

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,通过ELK监控发现,程序连接mysql DB 失败,通过看程序的log和mysql的error log发现mysql中出现error查看Mysql日志发现 InnoDB: Error: table `
千家信息网最后更新 2025年01月21日Mysql innodb错误解决 InnoDB: Error: table `mysql`.`innodb_table_stats`

通过ELK监控发现,程序连接mysql DB 失败,通过看程序的log和mysql的error log发现mysql中出现error

查看Mysql日志

发现 InnoDB: Error: table `mysql`.`innodb_table_stats` does not exist in the InnoDB internal

这个原因很明显 ,是mysql库的innodb_table_stats表损坏了。

首先登录mysql查看表是否存在? 结果:存在的。

Tables_in_mysql           |+---------------------------+| columns_priv              || db                        || event                     || func                      || general_log               || help_category             || help_keyword              || help_relation             || help_topic                || innodb_index_stats        || innodb_table_stats        || ndb_binlog_index          || plugin                    || proc                      || procs_priv                || proxies_priv              || servers                   || slave_master_info         || slave_relay_log_info      || slave_worker_info         || slow_log                  || tables_priv               || time_zone                 || time_zone_leap_second     || time_zone_name            || time_zone_transition      || time_zone_transition_type || user                      |


  1. mysql> show create table innodb_index_stats;

  2. ERROR 1146 (42S02): Table'mysql.innodb_index_stats' doesn't exist

  3. mysql>

猜测是表损坏了,所以打算重新构建表


ls /data/mysql/data/mysql

innodb_table_stats
innodb_index_stats
slave_master_info
slave_relay_log_info
slave_worker_info

发现文件存在,所以直接删除,重新创建。

rm -rf :

innodb_table_stats
innodb_index_stats
slave_master_info
slave_relay_log_info
slave_worker_info


创建前检查mysql默认的存储引擎,如果为MyiSAM ,则在创建的时候,需要指定存储引擎为INNODB

source /usr/local/mysql/share/mysql_system_tables.sql 这个表的时候,请注意默认的存储引擎是否为innodb.

个人操作,发现使用以上source并未能将以上损坏的表进行重新构建

尝试以下操作

1,先看这些表是否还存在,show tables ; 结果:不存在

ls ls /data/mysql/data/mysql/ 结果:不存在

2,尝试再次drop table innodb_table_stats purge ; (彻底删除表)

3,手动创建 innodb_table_stats ,结果:成功

4,循环2,3 操作步骤,重新创建以上损坏的表。


0