mysql Table 'mysql.innodb_index_stats' doesn't exist

Nokia 发表于 2017/8/26 12:36 | 显示全部楼层 |阅读模式
Table 'mysql.innodb_index_stats' doesn't exist
Table 'mysql.innodb_table_stats' doesn't exist
Table 'mysql.slave_master_info' doesn't exist
Table 'mysql.slave_relay_log_info' doesn't exist
Table 'mysql.slave_worker_info' doesn't exist
mysql_upgrade -hwuxiancheng.cn -uroot -p升级数据库出现以上错误提示,神奇的是从官方下载的原始版本安装以后也会出现这样的问题。吴先成发现,这个问题是因为InnoDb的ibdata ibdata1等文件丢失造成的,平时千万不要乱删MySQL的data目录及其子目录中的文件,InnoDB是一种非常蛋疼的数据库引擎,小网站尽量不要使用。以下提供两种解决各种InnoDB数据表不存在的方法。
方法一:如果是MySQL 5.7+版本,可以将performance_schema和mysql以外的数据库导出,关闭MySQL服务器以后将data目录中的文件全部全部删除,保留data目录,然后运行mysqld --initialize重新生成初始化数据,操作完成以后再将导出的数据导入回来即可。由此可以看出,为了方便系统还原,建议使用MySQL时不要往mysql这个默认的数据库里面存入数据而是总是建立系统数据库以外的数据库存放数据。
方法二:本方法对MySQL所有版本都适用,对于MySQL 5.6及更低版本,上面的方法是行不通的,因为MySQL早期版本根本没有生成初始数据的功能。
第一步 关闭MySQL服务器,进入data\mysql目录,将以下10个文件全部删除掉
  • slave_worker_info.ibd
  • slave_worker_info.frm
  • slave_relay_log_info.ibd
  • slave_relay_log_info.frm
  • slave_master_info.ibd
  • slave_master_info.frm
  • innodb_table_stats.ibd
  • innodb_table_stats.frm
  • innodb_index_stats.ibd
  • innodb_index_stats.frm
第二步 使用MySQL附带的原始数据恢复出问题的数据表:启动MySQL服务器,使用命令行连接到数据库,然后分别运行以下两条SQL语句,其中{mysql}代表MySQL安装目录的绝对路径,如果路径包含空格,需要给source后面的参数添加一对双引号。
  • source {mysql}\share\mysql_system_tables.sql;
  • source {mysql}\share\mysql_system_tables_data.sql;
第三步 关闭并且重新启动MySQL,重新运行mysql_upgrade.

手机版|轻松E站

E-mail: OHCC@163.COM

快速回复 返回顶部 返回列表