修复MySQL的MyISAM表命令check table用法

MySQL日志文件里出现以下错误,MySQL表通常不会发生crash情况,一般是在更新数据库时MySQL停止会导致。

CHECK TABLE语法

CHECK TABLE tbl_name[,tbl_name] ... [option] ...
option= {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}

检查一个或多个表是否有错误。CHECK TABLE对MyISAM和InnoDB表有作用。对于MyISAM表,关键字统计数据被更新。

CHECK TABLE也可以检查视图是否有错误,比如在视图定义中被引用的表已不存在。
CHECK TABLE语句会返回一个含有以下列的表:

[Warning] Checking table:   './数据库名/表名'
[ERROR] mysqld: Table './数据库名/表名' is marked as crashed and should be repaired

确认错误使用「check table 表名;」命令。

 代码如下 复制代码

mysql> check table 表名 quick;

+------------------+-------+----------+----------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------------------------------------------------------+
| DB.表名 | check | warning | Table is marked as crashed and last repair failed |
| DB.表名 | check | warning | 1 client is using or hasn't closed the table properly |
| DB.表名| check | error | Size of datafile is: 268414976 Should be: 268871480 |
| DB.表名 | check | error | Corrupt |
+------------------+-------+----------+----------------------------------------------------------+

从以上结果可以看出MySQL数据库出现了损坏。

修复时使用「repair table 表名;」命令,需要注意的是repair table命令只能用于MyISAM表。

 代码如下 复制代码

mysql> repair table 表名;
+---------------+--------+----------+--------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+---------------+--------+----------+--------------------------------------------------------+
| DB.表名 | repair | info | Found block that points outside data file at 268414940 |
| DB.表名 | repair | warning | Number of rows changed from 4377692 to 4370359 |
| DB.表名 | repair | status | OK |
+---------------+--------+----------+--------------------------------------------------------+

再次执行check table命令。

 代码如下 复制代码

mysql> check table 表名 quick;
+---------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+---------------+-------+----------+----------+
| DB.表名 | check | status | OK |
+---------------+-------+----------+----------+

时间: 2024-09-10 06:41:53

修复MySQL的MyISAM表命令check table用法的相关文章

MySQL实现MYISAM表批量压缩的方法_Mysql

本文实例讲述了MySQL实现MYISAM表批量压缩的方法.分享给大家供大家参考,具体如下: 关于对MYISAM表的压缩,可以使用myisampack和myisamchk完成(myisampack完之后必须进行myisamchk才能使用压缩后的表,而且是只读的), 其详细地用法可以参考官方文档: http://dev.mysql.com/doc/refman/5.1/zh/client-side-scripts.html. 这两个操作需要谨慎使用,在压缩之前需要确认mysqld已关闭或者要压缩的表

小解mysql中MyISAM表的PACK_KEYS压缩索引

在mysql的myisam引擎中,有一个是容易忽视的,叫压缩索引PACK_KEYS , myISAM使用前缀压缩来减小索引大小,默认情况下会压缩字符串,也可以压缩整数 可以使用create table时用PACK_KEYS控制索引压缩的方式. PACK_KEYS在MySQL手册中如下描述: 如果您希望索引更小,则把此选项设置为1.这样做通常使更新速度变慢,同时阅读速度加快.把选项设置为0可以取消所有的关键字压缩.把此选项设置为DEFAULT时,存储引擎只压缩长的CHAR或VARCHAR列(仅限于

mysql中optimize表命令测试例子

今天对myiam数据表进行批量删除后,发现空间没有回收,查了资料后,发现要通过optimize table来回收空间 测试如下,建立数据表:  代码如下 复制代码 CREATE TABLE `ttext` ( `id` int(11) DEFAULT NULL, `context` text ) ENGINE=MyISAM DEFAULT CHARSET=latin1 insert into ttext values( 1,'tiger1′),(2,'tiger2′),(3,'tiger3′);

mysql下优化表和修复表命令使用说明(REPAIR TABLE和OPTIMIZE TABLE)_Mysql

复制代码 代码如下: REPAIR TABLE `table_name` 修复表 OPTIMIZE TABLE `table_name` 优化表 REPAIR TABLE 用于修复被破坏的表. OPTIMIZE TABLE 用于回收闲置的数据库空间,当表上的数据行被删除时,所占据的磁盘空间并没有立即被回收,使用了OPTIMIZE TABLE命令后这些空间将被回收,并且对磁盘上的数据行进行重排(注意:是磁盘上,而非数据库). 多数时间并不需要运行OPTIMIZE TABLE,只需在批量删除数据行之

MySQL清空数据表的方法实例与分析_Mysql

MySQL数据库中,如果我们想清空数据表(删除数据表中所有内容)的话,可以通过下面两个语句来实现: truncate table table_n; delete from table_n; 实例 我们先通过实例看下通过这两种方式清空数据库的过程和结果 #delete演示 mysql> create table testforde( -> number int not null auto_increment, -> name varchar(20) not null, -> prim

mysql 命令修改表结构ALTER TABLE 句法

ALTER TABLE 句法 ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] alter_specification:         ADD [COLUMN] create_definition [FIRST | AFTER column_name ]   or    ADD [COLUMN] (create_definition, create_definition,...)   or    ADD INDEX [ind

MySQL中损坏的MyISAM表

即使MyISAM表格式非常可靠(SQL语句对表做的所有改变在语句返回之前被写下),如果下列任何事件发生,你依然可以获得损坏的表: · MySQLd进程在写中间被杀掉. · 发生未预期的计算机关闭(例如,计算机被关闭). · 硬件故障. · 你可以同时在正被服务器修改的表上使用外部程序(如myisamchk). · MySQL或MyISAM代码的软件缺陷. 一个损坏的表的典型症状如下: · 当在从表中选择数据之时,你得到如下错误: · Incorrect key file for table: '

MySQL数据库INNODB表损坏修复处理过程分享_Mysql

突然收到MySQL报警,从库的数据库挂了,一直在不停的重启,打开错误日志,发现有张表坏了.innodb表损坏不能通过repair table 等修复myisam的命令操作.现在记录下解决过程,下次遇到就不会这么手忙脚乱了. 处理过程: 一遇到报警之后,直接打开错误日志,里面的信息: InnoDB: Database page corruption on disk or a failed InnoDB: file read of page 30506. InnoDB: You may have t

window下修复mysql表与数据库

先们来分析问题 一个损坏的表的典型症状如下: 1 .当在从表中选择数据之时,你得到如下错误:Incorrect key file for table: '...'. Try to repair it 2 .查询不能在表中找到行或返回不完全的数据. 3 .Error: Table 'p' is marked as crashed and should be repaired . 4 .打开表失败: Can't open file: '×××.MYI' (errno: 145) . 如果你是myis