1

我正在尝试使用创建查询创建集群列

CREATE TABLE videos_by_tag (
       tag text,
       video_id uuid,
       added_date timestamp,
       title text,
       PRIMARY KEY ((tag), added_date, video_id)
) WITH CLUSTERING ORDER BY(added_date DESC);

它显示以下错误。我在创建表中遗漏了什么吗?

InvalidRequest:来自服务器的错误:code=2200 [Invalid query] message="集群键列必须与 CLUSTERING ORDER BY 指令中的列完全匹配"

仅当我包含主键中提到的所有聚类列(在本例中为 added_date,video_id)时,它才有效。是否必须按聚类顺序包含主键中的所有列?

CREATE TABLE videos_by_tag (
       tag text,
       video_id uuid,
       added_date timestamp,
       title text,
       PRIMARY KEY ((tag), added_date, video_id)
) WITH CLUSTERING ORDER BY(added_date DESC,video_id ASC);

我在 mac os 上使用以下版本的 cassandra

[cqlsh 5.0.1 | 卡桑德拉 4.0.0.680 | CQL 规范 3.4.5

仅当我包含主键中提到的所有聚类列(在本例中为 added_date,video_id)时,它才有效。是否必须按聚类顺序包含主键中的所有列?

4

1 回答 1

1

看起来这个问题也发布在https://community.datastax.com/questions/4118/上,我在这里重新发布我的答案。

是的,必须CLUSTERING ORDER BY在 DataStax Enterprise 6.8.0 的指令中指定所有聚类列。的逻辑CREATE TABLE在 Apache Cassandra 4.0-alpha1 ( CASSANDRA-13426 ) 中已更改,但已在 C* 4.0-alpha4 ( CASSANDRA-15271 ) 中恢复。以前的 [accepted] 行为将包含在 DSE 6.8 的未来版本中。干杯!

于 2020-05-16T03:54:15.217 回答