Cassandra CQL:计数器列创建和修改

时间:2012-07-11 19:28:19

标签: cassandra cql

我正在尝试通过Java创建一个计数器列,但是在运行时遇到错误。 我使用的是CQL 3.0.0和Cassandra 1.1.2

Statement st = con.createStatement();
String data = "CREATE COLUMNFAMILY user_count(priKey text PRIMARY KEY, countME counter)";
st.execute(data);

这是我得到的错误:

Exception in thread "main" java.sql.SQLSyntaxErrorException:        
org.apache.cassandra.config.ConfigurationException: Cannot add a counter column   
(countme) in a non counter column family

'CREATE COLUMNFAMILY user_count(priKey text PRIMARY KEY, countME counter)'
at org.apache.cassandra.cql.jdbc.CassandraStatement.doExecute(CassandraStatement.java:179)
at org.apache.cassandra.cql.jdbc.CassandraStatement.execute(CassandraStatement.java:203)
at cassandratest.EdgeCreator.aaListData(EdgeCreator.java:1323)
at cassandratest.Main.main(Main.java:214)

我已经尝试了Cassandra cql comparator type counter的答案,但我知道CQL 3.0.0的default_validation不再可用。我搜索了文档但没有找到任何内容。我正在寻找如何创建一个计数器列系列并使用Java增加它。 感谢您的帮助!

这也是我在这里发表的第一篇文章,所以如果有什么问题请告诉我,以便我以后能够纠正。

更新 在cqlsh中使用CREATE语句时,我得到一个ConfigurationException。 cqlsh会话如下:

Connected to Test Cluster at localhost:9160.
[cqlsh 3.0.0 | Cassandra 1.1.0 | CQL spec 3.0.0 | Thrift protocol 19.30.0]
Use HELP for help.
cqlsh> use "Keyspace2";
cqlsh:Keyspace2> CREATE COLUMNFAMILY user_count(priKey text PRIMARY KEY, countME
counter);
Bad Request: org.apache.cassandra.config.ConfigurationException: Cannot add a 
counter column (countme) in a non counter column family
cqlsh:Keyspace2>

1 个答案:

答案 0 :(得分:2)

你确定你使用的是cql 3吗?它看起来像你没有追溯,如果你不小心使用cql 2,那就是我所期望的错误。

该create语句应该在cql 3中起作用。

编辑:您使用的是cql 3,但您没有使用Cassandra 1.1.2。这是1.1.0的已知错误;如果升级到1.1.2,则应该修复。