我遇到了最奇怪的错误。
有时,在创建或更改表时,我会收到“表已存在”错误。但是,DROP TABLE 返回“#1051 - 未知表”。所以我得到了一个无法创建、无法删除的表。
当我尝试删除数据库时,mysqld 崩溃了。有时它有助于创建另一个具有不同名称的数据库,有时则不然。
我使用的数据库有大约 50 个表,全部是 InnoDB。不同的表都会出现此问题。
我在 Windows、Fedora 和 Ubuntu、MySQL 5.1 和 5.5 上经历过这种情况。使用 PDO、PHPMyAdmin 或命令行时,行为相同。我使用 MySQL Workbench 来管理我的架构 - 我看到了一些相关错误(结束线和其他内容),但它们都与我无关。
不,它不是 View ,而是表。所有名称均为小写。
我尝试了谷歌搜索到的所有方法 - 刷新表,将 .frm 文件从一个数据库移动到另一个数据库,读取 mysql 日志,除了重新安装整个该死的东西之外没有任何帮助。
“显示表”什么也没显示,“描述”表说“表不存在”,没有 .frm 文件,但“创建表”仍然以错误结束(“如果不存在则创建表”也是如此) ') 并且删除数据库会使 mysql 崩溃
相关但无用的问题:
编辑:
mysql> use askyou;
Database changed
mysql> show tables;
Empty set (0.00 sec)
mysql> create table users_has_friends (id int primary key);
ERROR 1050 (42S01): Table '`askyou`.`users_has_friends`' already exists
mysql> drop table users_has_friends;
ERROR 1051 (42S02): Unknown table 'users_has_friends'
同样,表不存在,但无法创建;
mysql> drop database askyou;
ERROR 2013 (HY000): Lost connection to MySQL server during query
名称更改,这不是我遇到问题的唯一表/数据库
最佳答案
当数据目录中缺少数据文件但表定义文件存在时,我遇到过此问题,反之亦然。如果您使用的是 innodb_file_per_table,请检查数据目录以确保您拥有相关表的 .frm
文件和 .ibd 文件。如果是MYISAM,应该有一个.frm
、.MYI
和一个.MYD
文件。
通常可以通过手动删除孤立文件来解决该问题。
关于mysql - 薛定谔 MySQL 表 : exists, 但它没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42083499/