mysql -- show tables的结果不一定准确

19 篇文章 0 订阅
13 篇文章 0 订阅

有没有碰到这样的情况:

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文件而导致结果的不准确。

而实际上这个表可能已经被删除,只是没删除干净。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值