MySQueaL Resources

resources for mysql admins and developers who are squealing for help

More Resources

Main Doc Pages
Comments
MySQL columns: everywhere I look are tables and columns; life is filled with databases of information to be ordered and grouped. (Ca'Grande, Milan, Italy)

CHECK TABLE Statement

Use this MySQL statement to check tables for errors; as of version 5.1.9 of MySQL, it works with the MyISAM, InnoDB, ARCHIVE, and CSV storage engines. If errors are discovered, you should run the REPAIR TABLE statement to repair the table.

hits past month: 12 ;  last updated: may 4, 2009 - 2:34am ;  parent: MySQL Table & Server Administration Statements

Syntax

CHECK TABLE table[,  . . . ] [CHANGED|QUICK|FAST|MEDIUM|EXTENDED|FOR UPGRADE]

Explanation

Use this MySQL statement to check MySQL tables for errors; as of version 5.1.9 of MySQL, it works with the MyISAM, InnoDB, ARCHIVE, and CSV storage engines. If errors are discovered, you should run the REPAIR TABLE statement to repair the table. Multiple MySQL tables may be given in a comma-separated list. This statement requires SELECT privileges.

There are several ways to control checking, specified after the list of tables:

  • CHANGED
  • Checks only tables that have been changed since the last check.

  • QUICK
  • Checks tables for errors, but won't scan individual rows for linking problems.

  • FAST
  • Checks only tables that have not been closed properly.

  • MEDIUM
  • Determines the key checksum for the rows and compares the results against the checksum for the keys. This option also checks rows to ensure that links were deleted properly.

  • EXTENDED
  • Thoroughly checks each row for errors. It takes a long time to complete.

  • FOR UPGRADE
  • Checks a MySQL table against the version of MySQL in use. If the table was created from an earlier version and there have been changes to the new version which make the table incompatible, the statement will then begin the EXTENDED method to check thoroughly the table. If it's successful, it will note that the table has already been checked so that future checks can avoid the time-consuming check. This option is available starting with version 5.1.7 of MySQL.

Examples

Here is an example of how you can use this MySQL statement:

CHECK TABLE workreq MEDIUM;

+----------------------+-------+----------+----------+
| Table                | Op    | Msg_type | Msg_text |
+----------------------+-------+----------+----------+
| workrequests.workreq | check | status   | OK       |
+----------------------+-------+----------+----------+

If an error is found with an InnoDB table, the server is shut down to prevent more problems. Check the error log for details to resolve the problem.

Return to MySQL Table & Server Administration Statements page of our MySQL Documentation