2016-11-09 115 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」 - 否則必須執行兩次工作。 –