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 操作步骤,重新创建以上损坏的表。

时间: 2024-08-03 10:47:13

Mysql innodb错误解决 InnoDB: Error: table `mysql`.`innodb_table_stats`的相关文章

MySQL 5.6 解决InnoDB: Error: Table "mysql"."innodb_table_stats" not found.问题

在安装MySQL 5.6.30时,安装完成后,后台日志报如下警告信息:2016-05-27 12:25:27 7fabf86f7700 InnoDB: Error: Table "mysql"."innodb_table_stats" not found.2016-05-27 12:25:27 7fabf86f7700 InnoDB: Error: Fetch of persistent statistics requested for table "hj

InnoDB: Error: Table "mysql"."innodb_table_stats" not found.

1,Mysqldump的时候报错如下: 2014-05-05 14:12:37 7f004a9a2700 InnoDB: Error: Table "mysql"."innodb_table_stats" not found. 但是show tables我看这个表示存在的: 但是show create table innodb_index_stats;报错如下: mysql> show create table innodb_index_stats; ERRO

InnoDB: Error: Table "mysql"."innodb_table_stats" not found索引表没找到,主从停止

InnoDB: Error: Table "mysql"."innodb_table_stats" not found. 导致:Seconds_Behind_Master: 27360  mysql主从同步停止 stop slave; 会一直卡住,service mysqld restart后,马上又会停止同步,出现同样问题. 初步判断: 因为innodb_table_stats表丢失,导致主从同步出现问题. 解决办法: 新建innodb_index_stats/i

MySql Table错误:is marked as crashed and last (automatic?) 和 Error: Table "mysql"."innodb_table_stats" not found

一.mysql 执行select 的时候报Table错误:is marked as crashed and last (automatic?) 解决方法如下: 找到mysql的安装目录的bin/myisamchk工具,在命令行中输入: myisamchk -c -r ../data/dedecmsv4/dede_archives.MYI 然后myisamchk 工具会帮助你恢复数据表的索引.重新启动mysql,问题解决. 问题分析: 1.错误产生原因,有网友说是频繁查询和更新dede_archi

mysql连接错误解决(ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol ref used (client option 'secure_auth' enabled))

当使用mysql的新版本是,连接老版本的mysql,就会有可能报: ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)这个错误. 异常原因在于服务器端的密码管理协议陈旧,使用的是旧有的用户密码格式存储:但是客户端升级之后采用了新的密码格式.mysql新版本遇到这种不一致的情况就会拒绝连接. 所以在连接是:

MYSQL错误解决:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 据说这个问题的原因很多,当然,我自己这个问题我是清楚的,就是mysql.sock的位置所致,一个是PHP要求的,一个是MYSQLD定义的,一个是MY.CONF指定的...SO.... 暂时不能统一的话,用软链接LN -S命令解决吧.. 方案5 摘要:解决不能通过mysql.sock连接MySQ

MySQL 1366错误解决办法

MySQL 1366错误大致描述如下 SQL Error: 1366: Incorrect string value: "xE8xAFxA6xE7xBBx86…" for column "address" at row 1 解决办法:检查数据库此字段的字符集与整理字符集是否与SQL语句传递数据的字符集相同:不相同则会引发MySQL1366错误. 修改MySQL该字段的字符集与整理规则即可.假设数据表为phplamp, SQL语句的字符集为utf8,出错的字段为add

MySQL [ERROR] Table 'mysql.user' doesn't exist

一次源码新装的mysql,由于没有复制my-default.cnf到/etc/my.cnf位置,在启动mysql的时候碰到了无法打开mysql.user表的错误.具体错误为:[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist.下面是该错误的描述及其解决办法. 1.现象描述[[email protected] scripts]# service mysqld star

Error: Table "mysql"."innodb_table_stats" not found.

Error: Table "mysql"."innodb_table_stats" not found. 2013-04-02 09:07:35 7fc53f5e4700 InnoDB: Recalculation of persistent statistics requested for table "mydatabase"."mytable" but the required persistent statistics