0

フィールドを更新するために次のコードを使用したい...

@@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)
4

1 に答える 1

2

コンパレータの代わりに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から:「列ファミリーにはカウンターのみが含まれるか、カウンターがまったく含まれません。」)

于 2012-01-11T03:11:55.927 に答える