我正在使用 MySQL 5.1.56
我有一个包含大约 70 个表的数据库,我有一个特定损坏的表的问题,例如表_X
当我尝试访问表时 mysql> 从 Table_x 中选择 *; ERROR 1105 (HY000): 无法读取.par 文件
我无法向表中添加分区。
当我尝试删除表格时,我看到以下错误。 mysql> 删除表 Table_X; ERROR 1051 (42S02): 未知表 'Table_X'
创建查询报错:ERROR 1050 (42S01): Table 'Table_X' already exists.
在我的数据库文件位置,我可以看到相应的 Table_X.frm、Table_X.ibd 和 Table_X.par 文件。但除此之外,我还在该位置看到一个文件“#sql-Table_X.frm”。
当我检查 information_Schema 数据库中的“Tables”表时,该特定表的 Engine 值为 NULL,而它本应为 InnoDb。 该表似乎以某种方式损坏。
我尝试了 Flush-tables 命令,但也没有帮助。我仍然无法删除并重新创建表。
我不想备份这个特定的表,但我需要保留数据库的其他表。有什么办法,我可以只重新创建这个单独的表,而不必恢复整个数据库。
最佳答案
你可以尝试用下面的语句修复表:
REPAIR TABLE Table_X;
注意,这样的查询可能会导致数据丢失,但由于您正在尝试删除表,我想这对您来说不是问题。
您也可以尝试使用 FRM 文件作为表格的来源
REPAIR TABLE Table_X USE_FRM;
PS:你能给我们以下查询的结果吗?
CHECK TABLE Table_X;
引用资料:
https://www.tutorialspoint.com/mysql/mysql_repair_table_statement.htm https://www.tutorialspoint.com/mysql/mysql_check_table_statement.htm
关于innodb - 无法删除 MySQL InnoDB 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49231981/