У меня есть поврежденная таблица MySQL MyISAM. Впервые он появился в моем журнале mysql как:
[ERROR] /usr/sbin/mysqld: Table './mydb/mytable' is marked as crashed
and last (automatic?) repair failed
Я тогда побежал CHECK TABLE
на нем, и после того, как я работал более часа, я получил следующее:
+--------------+-------+----------+----------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+--------------+-------+----------+----------------------------------------------------------+
| mydb.mytable | check | warning | Table is marked as crashed and last repair failed |
| mydb.mytable | check | warning | 5 clients are using or haven't closed the table properly |
| mydb.mytable | check | warning | Size of indexfile is: 215237632 Should be: 4096 |
| mydb.mytable | check | error | Record-count is not ok; is 4212263 Should be: 0 |
| mydb.mytable | check | warning | Found 48 deleted space. Should be 0 |
| mydb.mytable | check | warning | Found 1 deleted blocks Should be: 0 |
| mydb.mytable | check | warning | Found 8362327 key parts. Should be: 0 |
| mydb.mytable | check | error | Corrupt |
+--------------+-------+----------+----------------------------------------------------------+
Означает ли все это, что этот стол зашел слишком далеко, чтобы его можно было восстановить? Или должен REPAIR TABLE
все еще работают? Или есть другие варианты исправить эту таблицу без замены данных? Я спрашиваю сначала, потому что эта таблица довольно велика для моей системы, и я чувствую, что потребуется очень много времени, чтобы узнать, будет ли ремонт работать.
Я продолжил REPAIR TABLE
в любом случае, полагая, что если стол уже слишком далеко, мне больше нечего терять. К счастью, это сработало! Стол восстановлен и функционирует нормально.