您的位置:首页 > 数据库 > MySQL

mysqldump:Couldn't execute 'show create table `tablename`': Table tablename' doesn't exist (1146)

2015-11-15 09:45 786 查看
遇到了一个错误mysqldump:Couldn'texecute'showcreatetable`CONCURRENCY_ERRORS`':TableINVOICE_OLD.CONCURRENCY_ERRORS'doesn'texist(1146)######WARNING######ErrorsreportedduringAutoMySQLBackupexecution..BackupfailedErrorlogbelow..Error:Couldn'treadstatusinformationfortableCONCURRENCY_ERRORS()mysqldump:Couldn'texecute'showcreatetable`CONCURRENCY_ERRORS`':TableINVOICE_OLD.CONCURRENCY_ERRORS'doesn'texist(1146)Error:Couldn'treadstatusinformationfortableCONCURRENCY_ERRORS()mysqldump:Couldn'texecute'showcreatetable`CONCURRENCY_ERRORS`':TableINVOICE_OLD.CONCURRENCY_ERRORS'doesn'texist(1146)数据库的版本为:5.5.22-enterprise-commercial-advancedMySQLEnterpriseServer-AdvancedEdition(Commercial)如下所示,查询不了该表的定义以及数据(都提示该表不存在),但是使用showtablelike命令又能看到该表。

mysql>USEINVOICE_OLD;
Databasechanged
mysql>showtableslike'%CONCURRENCY_ERRORS%';
+----------------------------------------------+
|Tables_in_INVOICE_OLD(%CONCURRENCY_ERRORS%)|
+----------------------------------------------+
|CONCURRENCY_ERRORS|
+----------------------------------------------+
1rowinset(0.73sec)
mysql>selectcount(1)fromCONCURRENCY_ERRORS;
ERROR1146(42S02):Table'INVOICE_OLD.CONCURRENCY_ERRORS'doesn'texist
mysql>descCONCURRENCY_ERRORS;
ERROR1146(42S02):Table'INVOICE_OLD.CONCURRENCY_ERRORS'doesn'texist
mysql>





查看对应表的.frm文件(.frm文件是用来保存每个数据表的元数据(meta)信息,包括表结构的定义等),如下所示,发现该文件是存在的。

mysql>showvariableslike'%datadir%';
+---------------+------------------+
|Variable_name|Value|
+---------------+------------------+
|datadir|/u01/mysql/data/|
+---------------+------------------+
1rowinset(0.23sec)
mysql>exit
Bye
-bash-3.2$cd/u01/mysql/data
-bash-3.2$lsCONCURRENCY_ERRORS*
CONCURRENCY_ERRORS.frm

Google查了一下资料,发现这个可能是一个bug来的(详情请见链接https://bugs.mysql.com/bug.php?id=65670)因为这个数据库其实早就迁移走,数据库也被我重命名了。检查发现迁移后的数据库里面,该表没有任何数据。于是我尝试从数据库的数据目录删除了CONCURRENCY_ERRORS.frm文件,备份就不会出现这种情况了。但是没有搞清楚这种情况出现的前因后果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: