В кластере 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 эти хосты больше не вызывали никаких проблем.
Я надеюсь, что этот ответ может кому-то помочь в будущем.