【问题标题】:How to update a column value in Cassandra Using CQL?如何使用 CQL 更新 Cassandra 中的列值?
【发布时间】:2012-12-30 14:19:07
【问题描述】:

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

我使用了以下 CQL 查询

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

在执行此查询时,它会抛出

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

如果查询框架错误意味着如何使用CQL更新记录?

【问题讨论】:

  • 请记住,CQL 比 SQL 受到更多限制。不太确定您的问题,但错误消息表明“id”不是密钥或密钥别名(请参阅1)。由于 id 是一列而不是行键的(部分),我猜想 Cassandra 根本不可能进行此操作。
  • 你能发布你的 CF 定义吗?

标签: java cassandra cql


【解决方案1】:

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

请参阅 [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 定义并查看您的主键是什么。

【讨论】:

  • 如果您提供一个示例而不是公式,那将会很有用
【解决方案2】:

您是否尝试过: UPDATE keyspaceName/columnFalmilyName SET name='name' WHERE id = (without '')

【讨论】:

    猜你喜欢
    • 2014-06-02
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 2013-08-27
    • 2016-09-05
    • 2015-03-25
    • 2012-06-17
    • 2013-05-22
    相关资源
    最近更新 更多