MySQL检查崩溃的表

MySQL检查崩溃的表,mysql,Mysql,我注意到,当phpMyAdmin打开一个DB时,它会立即显示表是否崩溃。因此,在我看来,phpMyAdmin没有运行检查表或分析表 有人知道它是如何快速有效地获取这些信息的吗?我敢打赌 SHOW TABLE STATUS FROM `db` 就是你要找的东西 看看这条线。我认为,如果引擎为null(空),可能是因为表崩溃了如果您有shell访问权,mysqlanalyze实用程序可能会有所帮助 mysqlanalyze dbname 我发现的最有效的方法是使用命令行mysqlcheck工具

我注意到,当phpMyAdmin打开一个DB时,它会立即显示表是否崩溃。因此,在我看来,phpMyAdmin没有运行
检查表
分析表

有人知道它是如何快速有效地获取这些信息的吗?

我敢打赌

SHOW TABLE STATUS FROM `db` 
就是你要找的东西


看看这条线。我认为,如果引擎为null(空),可能是因为表崩溃了

如果您有shell访问权,
mysqlanalyze
实用程序可能会有所帮助

mysqlanalyze dbname

我发现的最有效的方法是使用命令行
mysqlcheck
工具:

mysqlcheck-u mydbuser-p mydbname

这将使用用户
mydbuser
访问
mydbname
,并提示输入该用户的密码。然后它将检查指定数据库中的每个表


注意:这不是phpMyAdmin的工作方式,因此严格来说,这不是对原始问题的回答,但我把它放在这里是因为Google在这里发送搜索
mysql show crasted tables

检查表的正确方法是

mysqlcheck DB TABLE
所以要检查数据库FOO中的表栏

mysqlcheck FOO BAR

在某些情况下,这可能是有帮助的,但在我的情况下不是这样<代码>显示表格状态不会给我已损坏的表格提供任何状态差异。@mc0e,它不仅不会一直显示已崩溃-表格在使用前不会标记为已崩溃。因此,在尚未读/写的表上获取状态将不会产生任何结果。如果发生了导致表崩溃的事件,最好的办法是对所有表进行修复,而不是等待它们告诉您它们崩溃了。因此,这个被接受的答案是错误的。OP询问phpMyAdmin是如何如此快速地获得表状态的,因此这个答案很可能是正确的(尽管没有证据,并且表示为猜测)。然而,如果@Dev_Null的评论中有信息,答案可能会有很大的改进。我认为这比公认的答案要好,因为在公认的答案中,您不可能在SHOW语句的上下文中轻松使用like。(另外,我更喜欢评论!=“”)
mysqlcheck FOO BAR