服务器重启后,我注意到 phpMyAdmin 没有显示我的 innodb 表,只显示 myisam。
我直接登录到 mysql 服务器,当 show tables 显示 innodb 表时,当我使用“show table status from mydb”时,inndb 表却不存在。
为什么它们突然不显示了?重启之前它们就是这样的。
此外,它们显示在“显示表”中,但尝试进行选择却表明它们不存在。
答案1
您应该运行的第一个查询是 SHOW ENGINES;
如果 InnoDB 的支持列显示 DISABLED,那么 mysqld.log 应该会告诉您是什么禁用了它。
SHOW TABLES 最有可能只遍历 INFORMATION_SCHEMA.TABLES
一旦你试图确定有关 InnoDB 表的信息,需要访问 ibdata1 文件以获取元数据,它就会崩溃并且找不到任何 InnoDB 表。我记得有一次请求了太多的 InnoDB 缓冲池,但我没有足够的内存。Percona 二进制文件在这方面更迟钝,因为 mysqld 根本无法启动。这比在半生不熟的状态下启动 MySQL 要好得多。
下次 InnoDB 似乎出现故障时,立即运行 SHOW ENGINES 并检查错误日志!