cassandra - 将新的 UDT 类型字段添加到 Cassandra 表时出错

标签 cassandra cql3 cqlsh

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

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

但我有一个异常(exception):

<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。

最佳答案

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

关于cassandra - 将新的 UDT 类型字段添加到 Cassandra 表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28415454/

相关文章:

java - 宽行的 Cassandra CQL3 java 示例

Cassandra宽行/动态列

cassandra - Apache Cassandra 3.7 CQLSH 'Unable to connect to any servers'

Cassandra 默认列值 cqlsh

database - 使用 Cassandra + PHP 的惯用客户端库?

hadoop - Cassandra + Solr/Hadoop/Spark - 选择合适的工具

Cassandra 3.9 和 CQL 规范版本

cassandra - 具有复合主键的Cassandra中的分页结果集-行中丢失

c++ - 使用 libcql 的 Cassandra 表的列名

cassandra - 有没有办法在 Cassandra 中查看 2 个副本中的数据?