innodb - 无法删除 MySQL InnoDB 表

标签 innodb mysql-5.1

我正在使用 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/

相关文章:

java - Tomcat 6.0.16 取消部署不会删除 MySQL Jar

mysql - TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT 最大存储大小

MySQL 索引 - In 与 Equals 索引问题

mysql - 如何将 INSERT ... SELECT 与特定列自动递增(从 1 开始)一起使用?

mysql - 相同的 MySQL 查询在 5.6 中的运行速度比在 5.1 中慢得多

mysql - Django 与 MySQL 和 UTF-8

mysql - 如何清除/刷新 mysql innodb 缓冲池?

MySQL MyISAM关系图

php - 使用 Doctrine 混合 MyISAM 和 InnoDB 表

MySQL 列的字符集转换是否会影响现有值