2012-01-11 10 views
0
私は、フィールドを更新するために、次のコードを使用したい

...私は、次の失敗得たことを試してみました
カサンドラCQLコンパレータ・タイプカウンター

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

初回:
CassandraCQL ::エラー:: InvalidRequestExceptionを私はコンパンダカウンタを使用する必要があることを知りましたが、私はcassandra-cql gemをセットアップする方法を見つけることができません...誰かがこれを動作させる方法を知っていますか? ? は下記動作しません。私のコードは、あなたがdefault_validation = CounterColumnTypeの代わりに、コンパレータを設定する必要が

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

答えて

2

...があります。

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

あなたはカウンタ値を変更するには「更新」を使用する必要があり、カウンターには、インサートの構文は(CQLの更新にとcreate new rows using updateすることができますので、同じことを行う挿入)はありません。

現在、あなたは同じ列の家族にカウンターと非カウンターを持つことはできません(wikiから:「カウンタだけ、あるいはまったくのカウンターが含まれているいずれかのカラムファミリ」)あなたの答えのための

+0

こんにちはおかげで、私はそれを試みましたが、私は次の失敗を得る...
CassandraCQL ::エラー:: InvalidRequestException:default_validation_classはCREATE COLUMNFAMILYの有効なキーワード引数ではありません
これはなぜ起こるのですか?宝石のバージョンはcassandra-cql 1.0.2であり、cassandraのバージョンは1.0.6です – user934801

+0

申し訳ありませんが、それはdefault_validation_classではなくdefault_validationです。私は答えを修正した。 – psanford

+0

ありがとうございます! – user934801