【问题标题】:MariaDB / InnoDB: index corruption - why?MariaDB / InnoDB:索引损坏 - 为什么?
【发布时间】:2016-11-09 10:19:00
【问题描述】:

我在 MariaDB / InnoDB 上遇到索引损坏问题。今天,我得到了

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

对于 2 个索引,并在数据库崩溃后尝试插入其中一个表。我已经通过删除和重新创建索引来解决这个问题,但现在是第二次了(上次有 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 问题吗?还是……?

【问题讨论】:

    标签: innodb mariadb database-indexes


    【解决方案1】:

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

    这是另一种“修复”表的方法:

    ALTER TABLE tbl ENGINE=InnoDB;
    

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

    DROP PRIMARY KEY 在 InnoDB 上是一件“坏事”。你能详细说明你为什么这样做吗?

    【讨论】:

    • 我已经在使用 InnoDB。掉PK是一次性动作,我不经常这样做。
    • 更改 PK 时,最好将DROPADD 放在一个ALTER 中——否则它必须做两倍的工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 2015-08-16
    • 2014-04-06
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多