我不知道发生了什么事。我有一张桌子叫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
and 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.
虽然我不知道它是怎么变成这个状态的。
看起来您遇到了 MySQL 中的一个已知错误,其中存在外键约束,但关联的索引已被删除。看:http://bugs.mysql.com/bug.php?id=68148 http://bugs.mysql.com/bug.php?id=68148
根据 MySQL 的版本(似乎您需要 5.6 或 >),您可以通过关闭外键检查然后重新创建丢失的索引来解决此问题。
SET FOREIGN_KEY_CHECKS=0;
您应该使用 SHOW CREATE TABLE 检查结构table name
然后使用创建索引 http://dev.mysql.com/doc/refman/5.0/en/create-index.html重新创建丢失的索引。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)