Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Astyanax中的Cassandra CQL3支持_Java_Cassandra_Astyanax - Fatal编程技术网

Java Astyanax中的Cassandra CQL3支持

Java Astyanax中的Cassandra CQL3支持,java,cassandra,astyanax,Java,Cassandra,Astyanax,Astyanax是否支持通过CQL3准备好的语句“插入”? 我使用最新的Astyanax库1.56.24和Cassandra 1.2.1。当我尝试使用CQL3执行准备好的语句时: keyspace.prepareQuery(conn.CF_CONTACTS) .withCql("INSERT INTO contacts (a, b) VALUES (?, ?);") .asPreparedStatement() .withStringValue("123") .withStrin

Astyanax是否支持通过CQL3准备好的语句“插入”? 我使用最新的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)

这是因为cassandra client中的更改通知了不正确使用CQL3实现的高级客户端应用程序。看

看起来Astyanax要么没有升级到这个版本的cassandra客户端,要么没有记录
目前我正在寻找解决方案。

我使用Astyanax 1.56.31实现了这一点。您需要在
astyanaxconfigurationmpl
实例中设置以下内容:

.setTargetCassandraVersion("1.2")
.setCqlVersion("3.0.0")

您可以使用DataStax java驱动程序代替Astyanax。它还没有发布,但对我来说它运行良好。