til*_*lex 7 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")
.withStringValue("456")
.execute();;
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
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)
Run Code Online (Sandbox Code Playgroud)
这是因为 cassandra 客户端进行了更改,以通知未正确使用 CQL3 实现的高级客户端应用程序。请参阅https://issues.apache.org/jira/browse/CASSANDRA-5172
看来 Astyanax 要么没有升级到这个版本的 cassandra 客户端,要么他们没有记录我目前正在寻找解决方案。
| 归档时间: |
|
| 查看次数: |
1696 次 |
| 最近记录: |