【发布时间】:2014-11-20 14:29:00
【问题描述】:
我不知道发生了什么。我有一张名为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 并没有解决这个问题。
更新:使用 root 帐户而不是特定用户帐户时的结果相同。
更新:我也无法重新创建表。
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.
虽然我不知道它是怎么变成这种状态的。
【问题讨论】:
-
先愚蠢的问题:表的名字末尾有空格吗?是否有任何
project_share_invite文件从 MySQL 数据目录中删除? -
尝试运行这个以及额外的检查..
SELECT table_name, table_type, engine FROM information_schema.tables WHERE table_schema = 'analytics'; -
谢谢大家。这些文件仍然存在于磁盘上(添加了该信息)。该表在
information_schema.tables中也正确显示。 -
对我来说唯一有意义的是,不再存在允许登录用户针对此架构的表进行选择的选择访问权限。
-
不幸的是,以 mysql root 用户身份登录时也会出现相同的行为。
标签: mysql