向Cassandra表添加新的UDT类型字段时出错

时间:2015-02-09 17:17:22

标签: cassandra cql3 cqlsh

当我尝试向我的cassandra表添加新的UDT类型字段时,我执行了以下命令:

CREATE TYPE price(
    micros bigint,
    currency_code varchar,
    formatted_amount varchar
);
ALTER TABLE table_name ADD price frozen;

但我有一个例外:

<ErrorMessage code=2000 [Syntax error in CQL query] message="line 1:38 missing EOF at '<' (...table metadata_m add price type [<]price...)">

那么如何解决这个问题呢?

我使用的是c * 2.1.2,cql3.2.0,cqlsh 5.0.1。

1 个答案:

答案 0 :(得分:2)

首先,如果您提供问题中收到的例外,通常会有所帮助。幸运的是,我的沙盒具有您在上面提到的完全相同的C *规范,因此在粘贴代码时我确实设法看到了这个异常:

aploetz@cqlsh:stackoverflow> CREATE TYPE price( micros bigint, currency_code varchar, formatted_amount varchar ); 
aploetz@cqlsh:stackoverflow> ALTER TABLE table_name ADD price frozen;
<ErrorMessage code=2000 [Syntax error in CQL query] message="Failed parsing statement: [ALTER TABLE some_data ADD price frozen;] reason: ArrayIndexOutOfBoundsException -1">

我扣除了这是因为您指定了类型price,但实际上没有为该列提供名称。此外,frozen需要与尖括号中的后续类型一起使用。这对我有用:

ALTER TABLE table_name ADD myprice frozen<price>;