首页 文章

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

提问于
浏览
1

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

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

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

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

1 回答

  • 1

    实际上,这似乎是 Cassandra 的一种奇怪行为 . 幸运的是,有一个简单的解决方法,您不需要重新创建表 .

    使用非集合类型(如 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中的评论)

相关问题