首页 >数据库 >mysql教程 >为什么我的 MySQL 表出现在 SHOW TABLES 中而不出现在 SELECT 查询中?

为什么我的 MySQL 表出现在 SHOW TABLES 中而不出现在 SELECT 查询中?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-07 05:49:12790浏览

Why Does My MySQL Table Appear in SHOW TABLES But Not in SELECT Queries?

MySQL 表消失难题已解决

当 SHOW TABLES 显示数据操作(例如 SELECT)无法访问的表时遇到不一致情况,根本原因往往难以捉摸。一个潜在的罪魁祸首是损坏的表文件,SHOW TABLES 可能无法检测到该文件。

在一个特定实例中,用户在更改 MySQL 数据目录后遇到了此问题。尽管表的文件存在,但从中选择数据会导致错误:

ERROR 1146 (42S02): Table 'database.TABLE_ONE' doesn't exist

这种矛盾的行为导致人们猜测 SHOW TABLES 仅验证文件存在性,而不验证文件完整性。不过,问题的根源最终还是被发现了:

  • 问题数据库使用了 InnoDB 表,该表依赖于 MySQL 数据目录中存储的 ibdata1 和 ib_logfile 文件。
  • 这些移动数据库时,新数据目录中不存在文件。

为了解决此问题,用户复制了这些文件进入新的数据目录,这成功地恢复了表的可访问性。这强调了在复制基于 InnoDB 的数据库时包含这些文件以确保其功能的重要性。

以上是为什么我的 MySQL 表出现在 SHOW TABLES 中而不出现在 SELECT 查询中?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn