CHECK TABLE tbl_name[,tbl_name] ... [option] ...
option= {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}
检查一个或多个表是否有错误。CHECK TABLE对MyISAM和InnoDB表有作用。对于MyISAM表,关键字统计数据被更新。
CHECK TABLE也可以检查视图是否有错误,比如在视图定义中被引用的表已不存在。
CHECK TABLE语句会返回一个含有以下列的表:
列
|
值
|
Table
|
表名称
|
Op
|
进行检查
|
Msg_type
|
状态、错误、信息或错误之一
|
Msg_text
|
消息
|
注意,该语句可能会为每个被检查的表产生多行信息。最后一行有一个Msg_type状态值。Msg_text通常应为OK。如果您没有得到OK,或表已经更新了,则您通常应该运行修复后的表。请参见5.9.4节,“表维护和崩溃恢复”。表已经更新了,这意味着表的存储引擎指示没有必要检查表。
可以给予的不同的检查选项列于下表中。这些选项只适用于检查MyISAM表。对于InnoDB表和视图,这些选项被忽略。
类型
|
意义
|
QUICK
|
不扫描行,不检查错误的链接。
|
FAST
|
只检查没有被正确关闭的表。
|
CHANGED
|
只检查上次检查后被更改的表,和没有被正确关闭的表。
|
MEDIUM
|
扫描行,以验证被删除的链接是有效的。也可以计算各行的关键字校验和,并使用计算出的校验和验证这一点。
|
EXTENDED
|
对每行的所有关键字进行一个全面的关键字查找。这可以确保表是100%一致的,但是花的时间较长。
|
如果没有指定QUICK, MEDIUM或EXTENDED选项,则对于动态格式MyISAM表,默认检查类型是MEDIUM。这与对表运行myisamchk --medium-checktbl_name的结果相同。对于静态格式MyISAM表,默认检查类型也是MEDIUM,除非CHANGED或FAST已被指定。在此情况下,默认值为QUICK。对于CHANGED和FAST,行扫描被跳过,因为行极少被破坏。
您可以组合检查选项,如下面的例子所示。该例子对表进行了一个快速检查,来查看该表是否被正确关闭:
CHECK TABLE test_table FAST QUICK;
注释:在有些情况下,CHECK TABLE会更改表。如果表被标记为“corrupted”或“not closed properly”,则出现这种情况。但是CHECK TABLE不会找出表中的问题。在这种情况下,CHECK TABLE会把表标记为良好。
如果一个表被破坏,很有可能问题在索引中,而不在数据部分中。所有前述的检查类型都可以彻底地检查索引,因此,可以找出多数的错误。
如果您只想要检查您假定的表是良好的,您应该不使用检查选项或QUICK选项。当您时间匆忙时,应使用QUICK。QUICK无法找出数据文件中的错误的风险非常小。(在多数情况下,在正常使用中,MySQL应能在数据文件中找出错误。如果找出了错误,表被标记为“corrupted”,并不能被使用,直到修复为止。)
如果您想要时常检查表,FAST和CHANGED多数情况下从原本中被使用(例如,从cron中被执行)。在多数情况下,FAST优先于CHANGED。(只有一种情况FAST不优先于CHANGED,那就是当您怀疑您在MyISAM代码中发现了错误。)
当MySQL试图通过关键字更新一行或查找一行时,如果您已经运行了一个常规检查后但仍得到来自表的奇怪的错误,此时使用EXTENDED。(如果常规的检查运行成功,则基本用不着EXTENDED。)
被CHECK TABLE报告的部分问题不会被自动修正:
? 发现行。此行中,auto_increment列有0值。
这意味着,您在表中有一行,该行的AUTO_INCREMENT索引列包含0值。(可以通过使用UPDATE语句,明确地把列设置为0,以创建一个AUTO_INCREMENT列为0的行。)
这本身不是一个错误,但是如果您决定转储表并恢复表,或对表进行ALTER TABLE,那么会导致出现麻烦。在此情况下,AUTO_INCREMENT列会根据AUTO_INCREMENT列的结果更改值,这会导致出现问题,如重复关键字错误等。
要消除警告,只需执行一个UPDATE语句,把列设置为除0以外的值。
分享到:
相关推荐
MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息; 约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。 常用五类约束: ...
8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示MyISAM...
8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示MyISAM...
8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示MyISAM...
8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示MyISAM...
8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示...
8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示...
8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示MyISAM...
mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:...
8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示MyISAM...
部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。 优点: 触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制用比CHECK...
Mysql 甲骨文 是个开源的数据库server,可运行在多种平台, 特点是响应速度特别快,主要面向中小企业 中小型企业 PostgreSQL 号称“世界上最先进的开源数据库“,可以运行在多种平台下,是tb级数据库,而且性能也很...
保存在oracle数据库中的所有操作细节: spool oracleday01.txt :开始记录 spool off :开始保存细节 四、SELECT语句:选择操作、投影操作。 select:从一个或多个表中检索一个或多个数据列。包含信息:想选择...
第9章 主流数据库的SQL语法差异解决方案 9.1 SQL语法差异分析 9.1.1 数据类型的差异 9.1.2 运算符的差异 9.1.3 函数的差异 9.1.4 常用SQL的差异 9.1.5 取元数据信息的差异 9.2 消除差异性的方案 ...
第9章 主流数据库的SQL语法差异解决方案 9.1 SQL语法差异分析 9.1.1 数据类型的差异 9.1.2 运算符的差异 9.1.3 函数的差异 9.1.4 常用SQL的差异 9.1.5 取元数据信息的差异 9.2 消除差异性的方案 ...
第9章 主流数据库的SQL语法差异解决方案 9.1 SQL语法差异分析 9.1.1 数据类型的差异 9.1.2 运算符的差异 9.1.3 函数的差异 9.1.4 常用SQL的差异 9.1.5 取元数据信息的差异 9.2 消除差异性的方案 ...
第9章 主流数据库的SQL语法差异解决方案 9.1 SQL语法差异分析 9.1.1 数据类型的差异 9.1.2 运算符的差异 9.1.3 函数的差异 9.1.4 常用SQL的差异 9.1.5 取元数据信息的差异 9.2 消除差异性的方案 ...
本书特色:主要介绍SQL的语法规则及在实际开发中的应用,并且对SQL在MySQL、MS SQL Server、Oracle和DB2中的差异进行了分析;详细讲解数据库对增、删、改、查等SQL的支持并给出了相应的SQL应用案例;透彻分析函数...
check约束:检查约束,check约束通过约束条件表达式设置列值应该满足的条件。 1.5 范式 1.5.1 第一范式 1.5.1.1 规范 无重复的列,确保每列保持原子性,即数据库表中的所有字段值都是不可分解的原子值。 1.5.1.2 ...