2016-11-09 76 views
1

我在MariaDB/InnoDB上遇到索引损坏问题。今天,我得到了MariaDB/InnoDB:索引腐败 - 为什么?

InnoDB: Error: Flagged corruption of <index> in <table> in CHECK TABLE; Wrong count 

2个索引,以及DB试图插入到其中一个表后崩溃后。我已经通过删除和重新创建索引来解决这个问题,但现在是第二次(上次有6个索引受到影响),所以我想知道:为什么我的索引损坏?

我现在唯一的出发点是,两次我都更新了1到2小时前的MariaDB(通过apt-get)。但在我开启MariaDB之前,我更愿意检查其他可能的原因。

# mysql -V 
mysql Ver 15.1 Distrib 10.1.19-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2 

编辑:再次发生。这次不是在更新之后,而是在长时间运行的查询之后(大桌面上的DROP PRIMARY KEY,需要79秒)。但是,表A上长​​时间运行的查询如何导致表B上的索引损坏?我的硬盘有缺陷吗?这是MariaDB-/InnoDB-问题吗?要么 ...?

回答

0

如果您使用的是MyISAM,请切换到InnoDB。

这是另一种方式来“修复”表:

ALTER TABLE tbl ENGINE=InnoDB; 

这将在复制表并重建所有索引。

DROP PRIMARY KEY对InnoDB来说是一件很糟糕的事情。你能详细说明你为什么这样做吗?

+0

我已经使用InnoDB了。放弃PK是一次性行动,我没有这样做。 – Heiko

+0

当更改PK时,最好在一个“ALTER”中执行“DROP”和“ADD” - 否则必须执行两次工作。 –