【问题标题】:error when add new UDT type field to Cassandra table将新的 UDT 类型字段添加到 Cassandra 表时出错
【发布时间】:2015-04-09 12:40:23
【问题描述】:

当我尝试向我的 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。

【问题讨论】:

  • 之前的编辑添加了异常文本。我会更新它,但我不想只是假设您看到了与我相同的异常。如果这与您看到的异常不同,请编辑并更新它。

标签: cassandra cql3 cqlsh


【解决方案1】:

首先,如果您提供您在问题中收到的例外情况,通常会有所帮助。对您来说幸运的是,我的沙盒具有与您上面提到的完全相同的 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>;

【讨论】:

    猜你喜欢
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 2016-04-15
    相关资源
    最近更新 更多