mysql innodbindexstats_无法打开表mysql / innodb_index_stats

问题

在MySQL 5.6中,ibdata1在mysql架构中包含5个InnoDB.

mysql> select table_name from information_schema.tables

-> where table_schema='mysql' and engine='InnoDB';

+----------------------+

| table_name |

+----------------------+

| innodb_index_stats |

| innodb_table_stats |

| slave_master_info |

| slave_relay_log_info |

| slave_worker_info |

+----------------------+

5 rows in set (0.00 sec)

mysql>

在5.6之前的MySQL版本中,如果关闭mysql,删除ibdata1,并启动mysql备份,则重新创建ibdata1.如果使用MySQL 5.6执行此操作,则不会重新创建这5个表.即使你删除了ibdata1,下面的10个文件仍然在/ var / lib / mysql / mysql中:

> innodb_index_stats.frm

> innodb_index_stats.ibd

> innodb_table_stats.frm

> innodb_table_stats.ibd

> slave_master_info.frm

> slave_master_info.ibd

> slave_relay_log_info.frm

> slave_relay_log_info.ibd

> slave_worker_info.frm

> slave_worker_info.ibd

我很早就学到了这一点.对于新创建或损坏的ibdata1,这5个表没有相应的数据字典条目.

在您的特定情况下,我怀疑您将ibdata1从Linux服务器复制到Windows服务器. MySQL / Windows期望数据字典具有DOS文件名格式.将ibdata1移动到Windows,MySQL / Windows无法与指向.frm和.ibd文件的Linux文件名和路径相关联.

步骤01:在另一个数据库服务器上安装MySQL

第02步:mysqldump只有那5个表

TABLELIST="innodb_index_stats"

TABLELIST="${TABLELIST} innodb_table_stats"

TABLELIST="${TABLELIST} slave_master_info"

TABLELIST="${TABLELIST} slave_relay_log_info"

TABLELIST="${TABLELIST} slave_worker_info"

mysqldump -uroot -p mysql ${TABLELIST} > mysql_innodb_tables.sql

步骤03:将mysql_innodb_tables.sql复制到具有错误表的数据库服务器.

步骤04:执行mysql_innodb_tables.sql

步骤05:运行FLUSH TABLES; (可选的)

试试看 !!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值