MySQL Table does not exist 错误,但确实存在

新手上路,请多包涵

有谁知道在什么情况下您会收到 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";

原文由 Troy Knapp 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 771
2 个回答

基本上,我认为我遇到的问题是由于不同的密码哈希长度造成的。在我的例子中,我得到了一个新服务器,在它上面做了一个完整的 mysql 转储,它也传输了密码和用户信息。新服务器已经用具有 16char 长度散列的 root 用户初始化,但我的旧服务器使用较新的 32char 散列长度。

我不得不进入 my.conf 将旧密码设置为 0(否则每次我尝试更新数据库时,新更新的长度为 16 个字符)。然后我通过命令 UPDATE mysql.user SET password=PASSWORD('password here'); 将所有密码更新为相同,然后我刷新了权限。

显然,让每个用户都使用相同的密码是一个非常糟糕的主意,所以在确认它可以正常工作后,我一个一个地更改了它们。

在我遇到这个解决方案之前,我输入了一篇博客文章,其中介绍了我所做的其他一些 在这里 不起作用的事情(以防万一这些更改中的一个或多个影响了我的结果)但是,我认为上面解决方案是完整的…但我没有尝试重现错误,所以我不能 100% 确定。

原文由 Troy Knapp 发布,翻译遵循 CC BY-SA 2.5 许可协议

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

If you copy the MySQL data directory from /var/lib/mysql to /path/to/new/dir , but only copy the database folders (ie mysql , wpdb , ecommerce 等)并且您确实有 InnoDB 表,您的 innodb 表将显示在“显示表”中,但对它们的查询( selectdescribe )将失败出现错误 Mysql error: table db.tableName doesn't exist 。您将在 db 目录中看到 .frm 文件,并想知道为什么。

For InnoDB tables, it’s important to copy over the ib* files, which in my case were ibdata1 , ib_logfile0 , and ib_logfile1 .一旦我完成传输并确保将它们复制过来,一切都按预期进行。

If your my.cnf file contains innodb_file_per_table the .ibd file will be present in the db directory but you still need the ib* files.

原文由 Isaac 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题