向 Cassandra 添加新的 UDT 类型字段时出错 table
error when add new UDT type field to Cassandra table
当我尝试向我的 cassandra table 添加一个新的 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。
首先,如果您提供您在问题中收到的例外情况,通常会有所帮助。对你来说幸运的是,我的沙箱具有你上面提到的完全相同的 C* 规范,所以我在粘贴你的代码时确实看到了这个异常:
aploetz@cqlsh:Whosebug> CREATE TYPE price( micros bigint, currency_code varchar, formatted_amount varchar );
aploetz@cqlsh:Whosebug> 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 table 添加一个新的 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。
首先,如果您提供您在问题中收到的例外情况,通常会有所帮助。对你来说幸运的是,我的沙箱具有你上面提到的完全相同的 C* 规范,所以我在粘贴你的代码时确实看到了这个异常:
aploetz@cqlsh:Whosebug> CREATE TYPE price( micros bigint, currency_code varchar, formatted_amount varchar );
aploetz@cqlsh:Whosebug> 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>;