将列表列转换为cassandra / DSE中的set列

时间:2018-02-14 18:59:14

标签: cassandra nosql datastax cql datastax-enterprise

在迭代新功能时,我的团队在DSE数据库中创建了一个列表列。我们现在希望它是一个设置列。我删除了列并将其再次创建为set列并出现此错误:

ALTER TABLE sometable DROP somecolumn;
ALTER TABLE sometable ADD somecolumn set<text>;
  

InvalidRequest:来自服务器的错误:code = 2200 [无效查询] message =“无法添加具有名称集成的集合,因为过去已经使用了具有相同名称和不同类型(列表)的集合” / p>

列中甚至没有任何数据。是不是有某种硬删除覆盖?我们可以更改名称,但我真的不喜欢名称的想法,如果有人试图使用它,它将无法工作。我需要重拍整张桌子吗?

1 个答案:

答案 0 :(得分:1)

事实上,这似乎是卡桑德拉的一种奇怪行为。幸运的是,有一个简单的解决方法,您不需要重新创建表。

使用非集合类型(如int)重新创建列并再次删除它。然后你可以按照设置创建它。

ALTER TABLE sometable DROP somecolumn;
ALTER TABLE sometable ADD somecolumn int;
ALTER TABLE sometable DROP somecolumn;
ALTER TABLE sometable ADD somecolumn set<text>;

(基于Cassandra: Adding new column to the table中的评论)