MySQL表不存在错误,但它确实存在

2022-08-30 18:11:05

有谁知道在什么条件下,当您的表实际上存在时,您可能会收到错误?1146: Table '<database>.<table>' doesn't exist

我在5台服务器上使用相同的代码,最近租用的只有一台显示此错误,因此我怀疑这可能是某种设置或安装错误。我可以从命令行执行我的sql语句就好了。显然,我也可以从命令行看到该表。当我建立连接时,我没有得到任何连接错误(我使用的是mysqli,顺便说一句)。

任何帮助将不胜感激。

精确查询:

$sql = "SELECT DISTINCT(mm_dic_word) AS word FROM spider.mm_dictionary WHERE mm_dic_deleted=0";

答案 1

这恰好发生在我身上,过了一会儿,我在一篇博客文章中找到了答案,并想把它放在这里。

如果您将MySQL数据目录从复制到,但只复制数据库文件夹(即,,等),并且您确实有innodb表,则innodb表将显示在“显示表”中,但对它们的查询(和)将失败,并出现错误。您将在 db 目录中看到该文件,并想知道为什么。/var/lib/mysql/path/to/new/dirmysqlwpdbecommerceselectdescribeMysql error: table db.tableName doesn't exist.frm

对于 innodb 表,复制文件非常重要,在我的情况下,这些文件是 、 和 。一旦我完成了转移,确保复制这些,一切都按预期工作。ib*ibdata1ib_logfile0ib_logfile1

如果您的 my.cnf 文件包含“innodb_file_per_table”,则 .ibd 文件将存在于 db 目录中,但您仍然需要 ib* 文件。


答案 2

在这种情况下,使用mysqlcheck将是有序的 - 所以你可以丢弃表的健全性问题,并在遇到问题时修复它们。


推荐