3

我未能使用 CQL 删除列。这是我收到的错误消息:

Bad Request: line 1:28 no viable alternative at input 'drop'

这就是我正在做的事情。我正在运行 cassandra 1.2.6。这是我创建密钥空间的方式:

CREATE KEYSPACE ex1 WITH replication = {
'class': 'SimpleStrategy',
'replication_factor': '1'
};

然后我切换到刚刚创建的键空间:

use ex1

之后,我创建了下表:

create table person ( id varchar, firstName varchar, lastName varchar, primary key (id));

现在我尝试删除一列,如下所示:

cqlsh:ex1> alter table person drop lastName;
Bad Request: line 1:19 no viable alternative at input 'drop'

尝试使用关键字COLUMNFAMILY代替TABLE也无济于事。

我究竟做错了什么?

4

2 回答 2

5

drop 在 Cassandra 1.2.x 中不起作用。您至少需要使用 2.0.0。

在 2.0 中,当您删除一列时,它立即不可用于查询,但数据仍然存在。该列被随后的压缩删除,因此最终将释放空间。

于 2013-09-17T08:35:59.160 回答
1

@AlexR

尝试alter table person drop lastname;

CQL3 不区分大小写。

顺便问一下,您使用的是哪个版本的 Cassandra?我在某处看到 CQL3 的早期版本不支持删除列

于 2013-09-17T08:32:14.890 回答