5

Javaを使用してカウンター列を作成しようとしていますが、実行時にエラーが発生します。CQL3.0.0とCassandra1.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コンパレータタイプカウンタへの回答を試しましたが、 CQL3.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>
4

1 に答える 1

2

cql 3を使用していますか?トレースバックからはそうではないように見えます。これは、誤ってcql2を使用した場合に予想されるエラーです。

そのcreateステートメントはcql3で機能するはずです。

編集: cql 3を使用していましたが、Cassandra1.1.2を使用していませんでした。これは1.1.0の既知のバグでした。1.1.2にアップグレードする場合は、修正する必要があります。

于 2012-07-12T18:00:48.573 に答える