目前正在使用 -
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]
我从this pull请求的文档和讨论中看到我可以在SimpleStatement上执行setConsistencyLevel(ConsistencyLevel.QUORUM)
,但我不希望重写所有不同的insert语句。
更新
只是关闭此问题的循环。我通过创建自定义InsertQuery
并使用final def insert
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)
}
来解决此问题。
*c
答案 0 :(得分:4)
首先,幻像中没有select * from tablename a
WHERE a.date >= '2015-04-13'
AND a.date <= '2015-04-21'
AND CASE WHEN :1 = 'Y' THEN ((DATEPART(dw, a.date) + @@DATEFIRST) % 7) NOT IN (0, 1) END
方法,而您使用的API方法最后缺少setValue
。
正确的结构是:
=
当您处于stackoverflow时,错误堆栈跟踪和不起作用的具体细节通常优于&#34;不起作用&#34;。