InnoDB:错误:找不到表“mysql”.“innodb_table_stats”

Aar*_*ron 3 mysql innodb replication mariadb galera

我遇到了同样的错误,尽管我正在运行具有 3 个节点的 galera 集群。我尝试按照InnoDB的说明进行操作:错误:升级到 mysql 5.6 后找不到表“mysql”.“innodb_table_stats”,但是当我进入运行 create 语句的步骤时,出现以下错误:

Error Code: 1813. Tablespace for table '`mysql`.`innodb_index_stats`' exists.
Please DISCARD the tablespace before IMPORT.
Run Code Online (Sandbox Code Playgroud)

这对我来说毫无意义,当我尝试使用

drop tablespace `innodb_index_stats`;
Run Code Online (Sandbox Code Playgroud)

我收到一个 SQL sysntax 错误。

Rol*_*DBA 10

问题其实很简单。这是发生的事情

安装 MySQL 时,5 个 InnoDB 系统表存在于两个地方

  • 里面/var/lib/mysql/mysql有 5 个.frm和 5 个.ibd文件
  • 内数据字典内ibdata1(InnoDB System Tablespace)

在安装过程中的某个时刻,您一定已经删除了ibdata1. 这留下的10个InnoDB的系统表文件/var/lib/mysql/mysql没有数据字典项。

解决方案

cd /var/lib/mysql/mysql
rm -f innodb_index_stats.frm
rm -f innodb_index_stats.ibd
rm -f innodb_table_stats.frm
rm -f innodb_table_stats.ibd
rm -f slave_master_info.frm
rm -f slave_master_info.ibd
rm -f slave_relay_log_info.frm
rm -f slave_relay_log_info.ibd
rm -f slave_worker_info.frm
rm -f slave_worker_info.ibd
Run Code Online (Sandbox Code Playgroud)

然后,登录 MySQL 并运行我帖子中的步骤:InnoDB: Error: Table "mysql"."innodb_table_stats" not found after upgrade to mysql 5.6

试一试 !!!