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

5

我正在尝试通过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 验证已不再可用。我搜索了文档,但没有找到任何信息。我正在寻找如何使用 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>

在Cassandra 1.2.2中对我有效,cqlsh -3: CREATE COLUMNFAMILY user_count(priKey text PRIMARY KEY, countME counter); - phil pirozhkov
1个回答

2

你确定你正在使用CQL 3吗?从你的回溯信息来看,似乎不是,如果你不小心使用了CQL 2,那么这就是我预期的错误。

那个创建语句应该在CQL 3中起作用。

编辑:你确实在使用CQL 3,但你没有使用Cassandra 1.1.2。那是1.1.0的已知bug;如果你升级到1.1.2,问题应该会得到解决。


我已将所有内容更新到最新版本,并更改了连接语句以包括CQL版本号:con = DriverManager.getConnection(“jdbc:cassandra://localhost:9160 / Keyspace2?version = 3.0.0”); 当我启动程序时,它会显示正在使用CQL版本3.0.0。 - D. Gibbs
不,我得到了同样的错误,关于无法在非计数列族中添加计数器列。然而,当我登录cqlsh(在更新完所有内容后我还没有这样做)时,它显示正在运行cqlsh 2.2.0。 - D. Gibbs
1
使用 cqlsh -3 选项获取 cql 3。 - the paul
@thepaul,您介意更新一下您的答案吗?现在它有点反向,我认为这使得它有点不清楚。它似乎是找到错误的一个很好的演示,但可以更新以使其更清晰。 - Crowie
抱歉,我不明白。什么是“backwards”? - the paul
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接