【问题标题】:com.datastax.driver.core.exceptions.InvalidQueryException: PRIMARY KEY part sequence found in SET partcom.datastax.driver.core.exceptions.InvalidQueryException:在 SET 部分中找到 PRIMARY KEY 部分序列
【发布时间】:2015-01-20 08:39:50
【问题描述】:

我正在尝试更新表格,然后我得到了这个异常:

com.datastax.driver.core.exceptions.InvalidQueryException:在 SET 部分中找到 PRIMARY KEY 部分序列。

我的表结构是

CREATE TABLE IF NOT EXISTS STYLINGBEE.LKPSTYLES(
    STYLEID ASCII,
    NAME ASCII,
    IMAGE ASCII,
    SEQUENCE INT,
    ACTIVE BOOLEAN,
    PRIMARY KEY (STYLEID,SEQUENCE)
)WITH CLUSTERING ORDER BY (SEQUENCE DESC);

【问题讨论】:

  • 奇怪,你有没有创建key-space?如果是,则使用该键空间,而不是 STYLINGBEE.LKPSTYLES 直接使用您的表名,这只是猜测。不确定它是否会有所帮助。
  • 虽然由不同的用户提交,但这个问题在 same exact schema 上询问与我 30 分钟前回答的这个问题相同的问题:stackoverflow.com/questions/27075596/… I can't将答案标记为没有接受或赞成的重复。

标签: cassandra cql


【解决方案1】:

虽然有完整的查询会有所帮助,但我可以从错误消息中看出您正在尝试UPDATE 一行的PRIMARY KEY。来自DataStax documentation on the UPDATE command

The UPDATE SET operation is not valid on a primary key field.

这就是您收到此特定错误消息的原因。如果您插入的行包含需要更新的主键的一部分,则必须删除该行并重新插入。

【讨论】:

  • 是的,在这种情况下 - 这正是他收到的,我只是研究了一些解决方法。
【解决方案2】:

Cassandra 不允许您更新主键。 您不能执行以下操作,因为 SEQUENCE 是主键的一部分。

更新 STYLINGBEE.LKPSTYLES SET SEQUENCE = 1 WHERE STYLEID = 1000;

【讨论】:

    【解决方案3】:

    您似乎正在尝试更新查询中未指定 STYLEID 的某些行(WHERE 部分)。您能否发布您的 CQL 声明。 我认为这个链接可以帮助你:Why doesn't my Cassandra update work?

    【讨论】:

      猜你喜欢
      • 2016-02-06
      • 1970-01-01
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多