我正在尝试通过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 session 如下:
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>

最佳答案

您确定使用的是cql 3吗?从您的回溯来看,您看起来好像不是,这就是我不希望看到的错误,如果您不小心使用cql 2。

该create语句应在cql 3中工作。

编辑:您正在使用cql 3,但未使用Cassandra 1.1.2。这是1.1.0版本的已知错误;如果升级到1.1.2,则应该修复该问题。

关于Cassandra CQL : counter column creation and modification,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11439992/

10-11 07:25