对表和索引的更改是指MySQL如何处理数据类型和字符集。必要的表修复或升级由CHECK TABLE,mysqlcheck或mysql_upgrade报告。
有很多方法可以重建表。其中一些已在下面列出-
转储和重新加载方法
ALTER TABLE方法
维修台方法
让我们简短地了解每个人-
如果由于在二进制(就地)升级或下载后不同版本的MySQL版本无法处理表而重建表,则需要使用此转储和重新加载方法。
可以通过转储并重新加载表来重建表。这可以通过使用“ mysqldump”并创建一个转储文件并允许mysql重新加载该文件来完成。这可以使用以下命令完成-
mysqldump db_name t1 > dump.sql mysql db_name < dump.sql
如果必须在单个数据库中重建所有表,则可以在不使用任何表名的情况下指定数据库的名称。可以使用以下命令完成-
mysqldump db_name > dump.sql mysql db_name < dump.sql
如果必须重建所有数据库中的所有表,则必须使用“-所有数据库”选项。可以使用以下命令完成-
mysqldump --all-databases > dump.sql mysql < dump.sql
如果需要使用ALTER TABLE方法重建表,则可以使用“空”更改。可以使用ALTER TABLE语句来更改表,以便它可以使用存储引擎。让我们举个例子:假设TblName是一个InnoDB表,下面的语句可用于重建该表-
ALTER TABLE TblName ENGINE = InnoDB;
REPAIR TABLE方法仅适用于MyISAM,ARCHIVE和CSV表。如果表检查操作表明文件已损坏或需要升级,则可以使用语句REPAIR TABLE。让我们举个例子:为了修复MyISAM表,可以执行以下语句-
REPAIR TABLE TblName;
mysqlcheck -repair提供对REPAIR TABLE语句的命令行访问。这是修复表的一种更方便的方法,因为您可以使用-databases来修复数据库中的特定表,或者使用-all-databases选项来修复所有数据库中的所有表。可以使用以下命令完成-
mysqlcheck −−repair −−databases db_name ... mysqlcheck −−repair −−all−databases