有没有碰到这样的情况:
show tables的结果中包含某个表,然而后续的SQL,无论是select还是update,insert都会报错:Table 'xxxx' doesn't existshow tables的结果不一定准确。
为什么这么说。首先应该了解一下show tables是如何工作的。mysqld进程会扫描mysql数据库服务器的数据保存目录下的所的.frm文件,而且它只检查.frm文件,,只要有存在.frm文件,就视为存在一个表的定义。所以show tables的结果不一定准确可靠,以下两种情况可能导致show tables的结果不准确,也就是说实际上表可能不存在,但是show talbles认为它存在:
1,不同的存储引擎,如果你在转移数据库的时候,就是恢复备份时,如果将一个使用innodb存储引擎的数据库转移到一不支持innodb的数据库服务器上时就有可能出现这样的善。明明表存在,却提示表不存在
2,表删除操作没完成,系统当机或由于其它原因,只留下了.frm文件而导致结果的不准确。
而实际上这个表可能已经被删除,只是没删除干净。