Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用CQL更新Cassandra中的列值?_Java_Cassandra_Cql - Fatal编程技术网

Java 如何使用CQL更新Cassandra中的列值?

Java 如何使用CQL更新Cassandra中的列值?,java,cassandra,cql,Java,Cassandra,Cql,我创建了一个包含两列字段的键空间。一个是Id,另一个是name。我已经在那个键空间中插入了记录。我想更新特定id的名称字段 我使用了以下CQL查询 UPDATE keyspaceName/columnFalmilyName SET name='name' WHERE id = 'id' 在执行此查询时,它抛出 InvalidRequestException(why:line 1:56 mismatched input 'id' expecting K_KEY)... 如果查询框是错误的,那

我创建了一个包含两列字段的键空间。一个是Id,另一个是name。我已经在那个键空间中插入了记录。我想更新特定id的名称字段

我使用了以下CQL查询

UPDATE keyspaceName/columnFalmilyName SET name='name' WHERE id = 'id' 
在执行此查询时,它抛出

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

如果查询框是错误的,那么如何使用CQL更新记录?

插入和更新需要指定行键,而您似乎在尝试使用列名。插入新的id、名称对时使用了什么键

有关详细信息,请参阅CQL文档[http://cassandra.apache.org/doc/cql3/CQL.html][1]

<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定义,看看主键是什么。

您尝试过:
更新keyspaceName/columnFalmilyName SET name='name',其中id=without

请记住,CQL比SQL限制得多。不确定您的问题,但错误消息表明“id”不是密钥或密钥别名请参阅。由于id是一个列而不是行键的一部分,我猜这个操作在Cassandra中是不可能的。你能发布你的CF定义吗?如果你提供一个示例而不是公式,它会很有用