2013-01-16 3 views
1

두 개의 열 필드가있는 키 공간을 만들었습니다. 하나는 이드이고 다른 하나는 이름입니다. 해당 키 스페이스에 레코드를 삽입했습니다. 특정 이드의 이름을 업데이트하고 싶습니다. 이 Cassandra에서 CQL을 사용하여 열 값을 업데이트하는 방법?

InvalidRequestException(why:line 1:56 mismatched input 'id' expecting K_KEY)... 

프레임 쿼리가 잘못된 수단 인 경우

의 예외를 throw이 쿼리를 실행하는 동안

나는 다음과 같은 CQL 쿼리

UPDATE keyspaceName/columnFalmilyName SET name='name' WHERE id = 'id' 

을 사용하고, 어떻게 CQL을 사용하여 레코드를 업데이트하는?

+1

CQL은 SQL보다 훨씬 제한적이라는 것을 명심하십시오. 문제에 대해서는 잘 모르겠지만 'id'는 키 또는 키 별칭이 아닙니다 ([1] (http://cassandra.apache.org/doc/cql/CQL.html#update) 참조)). id는 행 키의 일부가 아닌 열이므로이 작업은 Cassandra에서 간단하게 불가능하다고 생각합니다. – akaIDIOT

+0

CF 정의를 게시 할 수 있습니까? –

답변

1

삽입 및 업데이트 할 때 행 키를 지정해야하지만 열 이름을 사용하려는 것 같습니다. 새로운 ID, 이름 쌍을 삽입 할 때 어떤 키를 사용 했습니까?

[http://cassandra.apache.org/doc/cql3/CQL.html][1]의 CQL 문서를 참조하십시오

<update-stmt> ::= UPDATE <tablename> 
        (USING <option> (AND <option>)*)? 
        SET <assignment> (',' <assignment>)* 
        WHERE <where-clause> 
The UPDATE statement writes one or more columns for a given row in a table. The 
<where-clause> is used to select the row to update and must include all columns 
composing the PRIMARY KEY. Other columns values are specified through <assignment> 
after the SET keyword. 

당신은 당신의 ColumnFamily의 정의를 살펴보고 필요 기본 키가 무엇인지 확인하십시오.

관련 문제