在由 7 个 API 节点、1 个管理节点和 4 个 NDB 节点组成的基于 Linux 的 NDB 集群中,我正在尝试删除一个表。
当我尝试使用 MySQL 客户端删除表时,收到以下错误:
mysql> drop table table_name;
ERROR 1051 (42S02): Unknown table 'database_name.table_name'
我应该能够使用 MySQL 客户端删除 NDB 群集中的表,但在 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'
请指教如何删除该表。
答案1
经过几天的搜索,我发现问题是由 MySQL 版本不匹配引起的。我们最近创建了新的 API 节点并安装了最新版本的 MySQL(5.6.11-ndb-7.3.2)。
当尝试从其中一台新服务器删除表(存储在运行 MySQL 5.5.27-ndb-7.2.8 的 NDB 节点上)时出现了原始问题中描述的结果。
可以从同样运行 MySQL 5.5.27-ndb-7.2.8 的旧主机上轻松删除该表。将新 API 节点降级到 MySQL 5.5.31-ndb-7.2.13 后,这些主机不再造成任何问题。
我希望这个答案将来能对某人有所帮助。