我不知道发生了什么。我有一个名为 project_share_invite
的表。几个小时前(在我们的生产环境中)我无法再针对该表发出 SELECT。 MySQL 声称该表不存在,尽管它显示在 show tables
上。今天在机器上发生的唯一值得注意的事件是例行包升级(通过 apt)。
mysql> use analytics;
Database changed
mysql> show tables like 'project_share_invite';
+--------------------------------------------+
| Tables_in_analytics (project_share_invite) |
+--------------------------------------------+
| project_share_invite |
+--------------------------------------------+
1 row in set (0.00 sec)
mysql> select count(*) from project_share_invite;
ERROR 1146 (42S02): Table 'analytics.project_share_invite' doesn't exist
想法?这对我来说没有任何意义。
更新:表格的文件仍然存在于磁盘上(分别为 project_share_invite.frm
和 project_share_invite.idb
)并且其中有内容。
快速重启 MySQL 并没有解决这个问题。
更新:使用根帐户而不是特定用户帐户时结果相同。
更新:我也无法重新创建表格。
CREATE TABLE `analytics`.`project_share_invite` ( ... )
ERROR 1146 (42S02): Table 'analytics.project_share_invite' doesn't exist
更新:应该先检查错误日志:
InnoDB: Load table 'analytics/project_share_invite' failed, the table has missing foreign key indexes.
虽然我不知道它是怎么变成这个状态的。
最佳答案
看起来您遇到了 MySQL 中的一个已知错误,其中存在外键约束,但关联的索引已被删除。请参阅:http://bugs.mysql.com/bug.php?id=68148
根据 MySQL 的版本(似乎您需要 5.6 或 >),您可以通过关闭外键检查然后重新创建丢失的索引来解决此问题。
SET FOREIGN_KEY_CHECKS=0;
您应该使用 SHOW CREATE TABLE table name
检查结构
然后使用CREATE INDEX重新创建丢失的索引。
关于MySQL 无法从现有表中进行选择,因为它不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26044967/