使用元组创建表的Cassandra 2.1 CQL错误:输入'>'没有可行的替代方法

时间:2015-01-16 18:29:51

标签: cassandra cql cassandra-2.0

这可能是非常愚蠢的......但是我无法使用新的元组类型创建一个表:

cqlsh:ta> CREATE TABLE tuple_test (k int PRIMARY KEY, v frozen <tuple<int, int>> );
Bad Request: line 1:68 no viable alternative at input '>'
cqlsh:ta> 

我几乎从DataStax文档中复制了表创建语句......我缺少什么?

谢谢!

更新 - 基于BryceAtNetwork23和RossS的帮助:

是的,你是对的 - 我有DataStax Enterprise,它有Cassandra 2.0。

我已经使用Cassandra 2.1安装了DataStax社区,一切正常!

一个注意事项:跳过&#39;冷冻&#39;关键字不适用于DSC的Cassandra发行版 - 但冻结的内容确实有效。谢谢你的帮助!

[cqlsh 4.1.1 | Cassandra 2.1.2 | DSE  | CQL spec 3.1.1 | Thrift protocol 19.39.0]
cqlsh> CREATE TABLE ta.tuple_test (k int, v tuple<int, int>,PRIMARY KEY(k) );
Bad Request: Non-frozen tuples are not supported, please use frozen<>
cqlsh> CREATE TABLE ta.tuple_test (k int, v frozen <tuple<int, int>>,PRIMARY KEY(k) );
cqlsh> 

1 个答案:

答案 0 :(得分:2)

怪异。我犯了同样的错误。我确实设法通过略微修改或两次修改它。然后我做了一个desc只是为了确保它创建好了:

aploetz@cqlsh> CREATE TABLE stackoverflow.tuple_test (k int, v tuple<int, int>,PRIMARY KEY(k) );

aploetz@cqlsh> use stackoverflow ;
aploetz@cqlsh:stackoverflow> desc table tuple_test ;

CREATE TABLE stackoverflow.tuple_test (
    k int PRIMARY KEY,
    v frozen<tuple<int, int>>
) WITH bloom_filter_fp_chance = 0.01
    AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
    AND comment = ''
    AND compaction = {'min_threshold': '4', 'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32'}
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99.0PERCENTILE'

最重要的是,我没有在frozen中指定CREATE,但是当您desc表格时,您可以看到它知道将它放在那里。< / p>

编辑 - 这是我的cqlsh规范:

[cqlsh 5.0.1 | Cassandra 2.1.0-rc5-SNAPSHOT | CQL spec 3.2.0 | Native protocol v3]
  

Cassandra 2.0.11.83

嗯......基于此,我不知道你实际上是在Cassandra 2.1上。而且我很确定Tuple类型是2.1及更高版本的功能。仔细检查您的Cassandra版本一次。此外,如果您使用的是DSE(这意味着您有支持),我会打开一张机票,说明您所看到的错误。

编辑 - 仅供参考,我已将2.1.0-rc5版本升级到2.1.2,并运行原始CREATE,它按原样运行:

Connected to PermanentWaves at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3]
Use HELP for help.
aploetz@cqlsh> use stackoverflow ;
aploetz@cqlsh:stackoverflow> CREATE TABLE tuple_test (k int PRIMARY KEY, v frozen <tuple<int, int>> );
aploetz@cqlsh:stackoverflow> desc table tuple_test ;

CREATE TABLE stackoverflow.tuple_test (
    k int PRIMARY KEY,
    v frozen<tuple<int, int>>
)...