Назад | Перейти на главную страницу

При попытке удалить таблицу из кластера NDB я получаю сообщение об ошибке «4243: индекс не найден»

В кластере NDB на базе Linux, состоящем из 7 узлов API, 1 узла управления и 4 узлов NDB, я пытаюсь удалить таблицу.

Когда я пытаюсь удалить таблицу с помощью MySQL Client, я получаю следующую ошибку:

mysql> drop table table_name;
ERROR 1051 (42S02): Unknown table 'database_name.table_name'

Я должен иметь возможность удалять таблицы в кластере NDB с помощью клиента MySQL, но после короткого поиска в Google я обнаружил, что могу также использовать инструмент ndb_drop_table.

Затем я получил следующие результаты:

./ndb_drop_table --ndb-nodeid=13 --ndb-mgmd-host=xx.xx.xx.xx:1186 table_name -d database_name
Dropping table table_name...
4243: Index not found

NDBT_ProgramExit: 1 - Failed

В поисках этой ошибки я получил ровно один результат (без ответа): http://lists.mysql.com/cluster/1608

В крайнем случае я попытался удалить всю базу данных, но эта команда сначала внутренне удаляет все таблицы, поэтому я получил те же результаты:

mysql> drop database database_name;
ERROR 1051 (42S02): Unknown table 'database_name.table_name'

Посоветуйте, пожалуйста, как удалить эту таблицу.

После нескольких дней поиска я обнаружил, что проблема была вызвана несоответствием версии MySQL. Недавно мы создали новые узлы API и установили последнюю версию MySQL (5.6.11-ndb-7.3.2).

Результаты, описанные в исходном вопросе, возникли при попытке удалить таблицу (хранящуюся на узлах NDB под управлением MySQL 5.5.27-ndb-7.2.8) с одного из этих новых серверов.

Таблицу можно было без проблем удалить со старого хоста, на котором также работает MySQL 5.5.27-ndb-7.2.8. После понижения версии новых узлов API до MySQL 5.5.31-ndb-7.2.13 эти хосты больше не вызывали никаких проблем.

Я надеюсь, что этот ответ может кому-то помочь в будущем.