MySQL>表不存在。但这确实(或者应该如此)

我确实更改了MySQL安装的datadir,并按照某些步骤运行良好。我曾经动过的每个基地都正确地移动了,但是一个。


我可以连接和使用数据库,即使SHOW TABLES也会正确返回所有表,并且每个表的文件都存在于mysql数据目录中。但是,当我尝试在此处选择内容时,它说该表不存在。但是表确实存在,它甚至显示在SHOW TABLES语句中!


我的猜测是,SHOW TABLES会以某种方式列出文件的存在,文件已损坏或类似的东西,但它不会对其进行检查。因此,我可以列出它们,但不能访问它们。


但这只是一个猜测,我以前从未见过。现在无法重新启动数据库进行测试,使用该数据库的所有其他应用程序都可以正常运行。


有谁知道这是什么吗?


例:


mysql> SHOW TABLES;

+-----------------------+

| Tables_in_database    |

+-----------------------+

| TABLE_ONE             |

| TABLE_TWO             |

| TABLE_THREE           |

+-----------------------+

mysql> SELECT * FROM TABLE_ONE;

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


慕神8447489
浏览 1527回答 3
3回答

12345678_0001

以防万一有人还在乎:使用命令直接复制数据库目录后,我遇到了同样的问题cp -r /path/to/my/database /var/lib/mysql/new_database如果您对使用InnoDB表的数据库执行此操作,则会遇到上述疯狂的“表不存在”错误。问题是,你需要ib*在MySQL的datadir根目录的文件(例如ibdata1,ib_logfile0和ib_logfile1)。当我复制这些内容时,它对我有用。

holdtom

对我来说,在Mac OS(MySQL DMG安装)上,只需重启MySQL服务器即可解决此问题。我猜是因为冬眠造成的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL