This section describes how to rebuild a table. This can be
necessitated by changes to MySQL such as how data types are
handled or changes to character set handling. For example, an
error in a collation might have been corrected, necessitating a
table rebuild to rebuild the indexes for character columns that
use the collation. It might also be that a table repair or
upgrade should be done as indicated by a table check operation
such as that performed by CHECK TABLE,
mysqlcheck, or
mysql_upgrade.
Methods for rebuilding a table include dumping and reloading it,
or using ALTER TABLE or
REPAIR TABLE.
If you are rebuilding tables because a different version of MySQL will not handle them after a binary upgrade or downgrade, you must use the dump-and-reload method. Dump the tables before upgrading or downgrading (using your original version of MySQL), and reload the tables after upgrading or downgrading (after installing the new version).
If you use the dump-and-reload method of rebuilding tables only for the purpose of rebuilding indexes, you can perform the dump either before or after upgrading or downgrading. Reloading still must be done afterward.
To re-create a table by dumping and reloading it, use mysqldump to create a dump file and mysql to reload the file:
shell>mysqldumpshell>db_namet1 > dump.sqlmysqldb_name< dump.sql
To recreate all the tables in a single database, specify the database name without any following table name:
shell>mysqldumpshell>db_name> dump.sqlmysqldb_name< dump.sql
To recreate all tables in all databases, use the
--all-databases option:
shell>mysqldump --all-databases > dump.sqlshell>mysql < dump.sql
To rebuild a table with ALTER
TABLE, use a statement that “changes” the
table to use the storage engine that it already has. For
example, if t1 is a MyISAM
table, use this statement:
mysql> ALTER TABLE t1 ENGINE = MyISAM;
If you are not sure which storage engine to specify in the
ALTER TABLE statement, use
SHOW CREATE TABLE to display the
table definition.
If you must rebuild a table because a table checking operation
indicates that the table is corrupt or needs an upgrade, you can
use REPAIR TABLE if that
statement supports the table's storage engine. For example, to
repair a MyISAM table, use this statement:
mysql> REPAIR TABLE t1;
For storage engines such as InnoDB that
REPAIR TABLE does not support,
use mysqldump to create a dump file and
mysql to reload the file, as described
earlier.
For specifics about which storage engines
REPAIR TABLE supports, see
Section 12.5.2.6, “REPAIR TABLE Syntax”.

User Comments
Add your own comment.