目前使用——
cqlsh> show version
[cqlsh 4.1.1 | Cassandra 2.0.17 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
使用 phantom-dsl 1.12.2 , Scala 2.10 ..
我不知道如何设置查询的一致性级别。
作为 .. 的一部分,insert()
有预定义的函数。我怎样才能将一致性级别传递给它们?select()
CassandraTable
insert.value(....).consistencyLevel_=(ConsistencyLevel.QUORUM)
不起作用并因错误而失败(可能是因为这在查询末尾附加了“USING CONSISTENCY QUORUM”)。这是我得到的实际异常
com.datastax.driver.core.exceptions.SyntaxError: line 1:424 no viable alternative at input 'CONSISTENCY'
at com.datastax.driver.core.Responses$Error.asException(Responses.java:122) ~[cassandra-driver-core-2.2.0-rc3.jar:na]
at com.datastax.driver.core.DefaultResultSetFuture.onSet(DefaultResultSetFuture.java:120) ~[cassandra-driver-core-2.2.0-rc3.jar:na]
at com.datastax.driver.core.RequestHandler.setFinalResult(RequestHandler.java:186) ~[cassandra-driver-core-2.2.0-rc3.jar:na]
at com.datastax.driver.core.RequestHandler.access$2300(RequestHandler.java:45) ~[cassandra-driver-core-2.2.0-rc3.jar:na]
at com.datastax.driver.core.RequestHandler$SpeculativeExecution.setFinalResult(RequestHandler.java:754) ~[cassandra-driver-core-2.2.0-rc3.jar:na]
at com.datastax.driver.core.RequestHandler$SpeculativeExecution.onSet(RequestHandler.java:576) ~[cassandra-driver-core-2.2.0-rc3.jar:na]
我从有关此拉取请求的文档和讨论中看到,我可以setConsistencyLevel(ConsistencyLevel.QUORUM)
对 SimpleStatement 执行操作,但我不希望重写所有不同的插入语句。
更新
只是为了结束这个问题的循环。我通过创建一个自定义InsertQuery
然后使用它而不是final def insert
in提供的那个来解决这个问题CassandraTable
def qinsert()(implicit keySpace: KeySpace) = {
val table = this.asInstanceOf[T]
new InsertQuery[T, M, Unspecified](table, CQLQuery("INSERT into keyspace.tablename", consistencyLevel = ConsistencyLevel.QUORUM)
}