在由7个API节点,1个pipe理节点和4个NDB节点组成的基于Linux的NDB群集中,我试图删除一个表。
当我尝试使用MySQL客户端删除表时,我收到以下错误:
mysql> drop table table_name; ERROR 1051 (42S02): Unknown table 'database_name.table_name'
我应该可以通过使用MySQL客户端在NDB集群中删除表,但在Google上进行简短的search之后,我发现我也可以使用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
search这个错误,我得到了一个(未答复)的结果: http : //lists.mysql.com/cluster/1608
作为最后一招,我试图删除整个数据库,但是这个命令在内部先删除所有的表,所以我得到了相同的结果:
mysql> drop database database_name; ERROR 1051 (42S02): Unknown table 'database_name.table_name'
请告知如何删除此表。
经过几天的search,我发现问题是由MySQL版本不匹配造成的。 我们最近创build了新的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之后,这些主机不再造成任何麻烦。
我希望这个答案可以帮助未来的人。