首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Astyanax中的Cassandra CQL3支持

Astyanax中的Cassandra CQL3支持
EN

Stack Overflow用户
提问于 2013-01-29 17:38:44
回答 2查看 1.7K关注 0票数 7

Astyanax是否通过带有CQL3的预准备语句支持"insert into“?我使用最新的Astyanax库1.56.24和Cassandra 1.2.1。当我尝试使用CQL3执行预准备语句时:

代码语言:javascript
复制
keyspace.prepareQuery(conn.CF_CONTACTS)
  .withCql("INSERT INTO contacts (a, b) VALUES (?, ?);")
  .asPreparedStatement()
  .withStringValue("123")
  .withStringValue("456")
  .execute();;

我得到了以下异常:

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-01 18:01:04

这是因为cassandra客户端中的更改将通知不正确使用CQL3实现的高级客户端应用程序。请参阅https://issues.apache.org/jira/browse/CASSANDRA-5172

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

票数 2
EN

Stack Overflow用户

发布于 2013-03-25 22:24:20

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

代码语言:javascript
复制
.setTargetCassandraVersion("1.2")
.setCqlVersion("3.0.0")
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14579731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档