CHECK TABLE

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.

Syntax

Below is the syntax for this command. Text within square brackets (i.e, [ and ] ) are optional. Choices are separated by bars (i.e, | ). Ellipses preceded by a comma indicates a repeating pattern. Ellipses before or after syntax are used to highlight a relevant except from the larger syntax. Text displayed in italic letters represent text that should be replaced with the specific names related to the database (e.g., column with the name of the column).

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.