Cassandra cql比较器类型计数器

我想使用以下代码更新字段…

@@db.execute("UPDATE user_count SET counters = counters + #{val} WHERE cid = 1 ") 

我第一次尝试,我得到以下失败:
CassandraCQL :: Error :: InvalidRequestException:非交换columnfamily user_count的无效操作
我发现我必须使用比较器计数器,但我无法找到我如何使用cassandra-cql gem设置它…有谁知道我怎么能让它工作? 下面有我的代码不起作用……

 @@db.execute("CREATE COLUMNFAMILY user_count(cid varchar PRIMARY KEY, counters counter) with comparator = counter " ) @@db.execute("INSERT INTO user_count (cid, counters) VALUES (?,?)", 1, 0) 

您需要设置default_validation = CounterColumnType而不是比较器。

 @@db.execute("CREATE COLUMNFAMILY user_count(cid varchar PRIMARY KEY, counters counter) with default_validation=CounterColumnType") @@db.execute("update user_count set counters = counters + 1 where cid = 1") 

您必须使用’update’来更改计数器值,没有计数器的插入语法(在CQL更新和插入中执行相同的操作,以便您可以使用update创建新行 )。

目前,您不能在同一列系列中拥有计数器和非计数器(来自wiki :“列族仅包含计数器,或者根本不包含计数器。”)