如何在cqlsh中将CONSISTENCY设置为SERIAL?

时间:2015-02-18 19:09:14

标签: cassandra cql

我正在尝试使用SERIAL一致性在Cassandra中尝试轻量级事务。但是,尝试在cqlsh中设置一致性级别会导致错误:

cqlsh:learning> CONSISTENCY SERIAL;
Improper CONSISTENCY command.

已从CQL中删除WITH CONSISTENCY语句,因此我无法使用它。有没有办法从cqlsh启用串行一致性?或者我必须使用驱动程序吗?

1 个答案:

答案 0 :(得分:2)

CONSISTENCY命令仍应在cqlsh中运行。但valid values适用于此设置:

  • ANY
  • ONE
  • TWO
  • THREE
  • QUORUM
  • 所有的
  • LOCAL_QUORUM
  • EACH_QUORUM

SERIAL不在该列表中,因此您看到错误。有一个开放的Jira票证可以解决这个问题:CASSANDRA-8051

这似乎是一致性级别,对其有一些限制,因此难以实现。 Consistency Level descriptions表示:

  

您无法将此级别配置为常规一致性级别,   使用一致性级别字段在驱动程序级别配置。

设置此一致性级别的Java Driver apparently has a specific method

  

查询的序列一致性级别,设置为   Statement.setSerialConsistencyLevel()类似于一致性   level,但仅用于具有条件更新的查询。那   是,它仅用于具有等效IF的查询   CQL中的条件。