7

Astyanax は、CQL3 を使用したプリペアド ステートメントによる「insert into」をサポートしていますか? 最新の Astyanax ライブラリ 1.56.24 と Cassandra 1.2.1 を使用しています。CQL3 でプリペアド ステートメントを実行しようとすると、次のようになります。

keyspace.prepareQuery(conn.CF_CONTACTS)
  .withCql("INSERT INTO contacts (a, b) VALUES (?, ?);")
  .asPreparedStatement()
  .withStringValue("123")
  .withStringValue("456")
  .execute();;

次の例外が発生します。

Caused by: InvalidRequestException(why:Cannot execute/prepare CQL2 statement since the CQL has been set to CQL3(This might mean your client hasn't been upgraded correctly to use the new CQL3 methods introduced in Cassandra 1.2+).)
at org.apache.cassandra.thrift.Cassandra$prepare_cql_query_result.read(Cassandra.java:38738)
at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
at org.apache.cassandra.thrift.Cassandra$Client.recv_prepare_cql_query(Cassandra.java:1598)
at org.apache.cassandra.thrift.Cassandra$Client.prepare_cql_query(Cassandra.java:1584)
at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$6$3$1.internalExecute(ThriftColumnFamilyQueryImpl.java:747)
at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$6$3$1.internalExecute(ThriftColumnFamilyQueryImpl.java:742)
at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:56)
4

2 に答える 2

4

を使用してこれを機能させましAstyanax 1.56.31た。AstyanaxConfigurationImplインスタンスで次を設定する必要があり ます。

.setTargetCassandraVersion("1.2")
.setCqlVersion("3.0.0")
于 2013-03-25T14:24:19.743 に答える