Cassandra error: "Clustering key columns must exactly match columns in CLUSTERING ORDER BY directive"
Cassandra error: "Clustering key columns must exactly match columns in CLUSTERING ORDER BY directive"
我是运行一个cassandra查询,其实以前做过这个。但现在我无法执行查询,它会抛出错误:
Cassandra error: InvalidRequest: Error from server: code=2200 [Invalid query] message="Clustering key columns must exactly match columns in CLUSTERING ORDER BY directive"
我的查询是:
CREATE TABLE statistics(country_name text, dt date, confirmed_cases bigint, deaths bigint,
PRIMARY KEY(deaths))with clustering order by (deaths DESC);
请帮忙!
发生这种情况是因为您只指定了一个 PRIMARY KEY。单个 PRIMARY KEY 默认成为 分区键 。所以这里有两个问题:
- 您需要定义一个集群键。
- 您正试图通过您的分区键强制执行顺序。
这里有几个选项。但是由于您想要按 deaths
排序,您可能应该指定一个不同的列作为您的分区键。也许按 country_name
划分?
...
PRIMARY KEY (country_name,deaths))
WITH CLUSTERING ORDER BY (deaths DESC);
需要注意的是,您需要在 WHERE
子句中 also/always 按 country_name
过滤。
Cassandra 中的主键由一个或多个分区键和零个或多个聚簇键组成。这些组件的顺序始终是分区键在前,然后是集群键。
本例中的 deaths 列是分区键而不是集群键
例如,在下面的查询结构中,名称 1 是分区键,名称 2 是集群键。
CREATE TABLE IF NOT EXISTS
table(column name1 data type,
column name2 data type,
column name3 data type,
PRIMARY KEY(name1,name2))
with clustering order by (name2 DESC);
在此处查找更多信息Cassandra keys
我是运行一个cassandra查询,其实以前做过这个。但现在我无法执行查询,它会抛出错误:
Cassandra error: InvalidRequest: Error from server: code=2200 [Invalid query] message="Clustering key columns must exactly match columns in CLUSTERING ORDER BY directive"
我的查询是:
CREATE TABLE statistics(country_name text, dt date, confirmed_cases bigint, deaths bigint,
PRIMARY KEY(deaths))with clustering order by (deaths DESC);
请帮忙!
发生这种情况是因为您只指定了一个 PRIMARY KEY。单个 PRIMARY KEY 默认成为 分区键 。所以这里有两个问题:
- 您需要定义一个集群键。
- 您正试图通过您的分区键强制执行顺序。
这里有几个选项。但是由于您想要按 deaths
排序,您可能应该指定一个不同的列作为您的分区键。也许按 country_name
划分?
...
PRIMARY KEY (country_name,deaths))
WITH CLUSTERING ORDER BY (deaths DESC);
需要注意的是,您需要在 WHERE
子句中 also/always 按 country_name
过滤。
Cassandra 中的主键由一个或多个分区键和零个或多个聚簇键组成。这些组件的顺序始终是分区键在前,然后是集群键。
本例中的 deaths 列是分区键而不是集群键
例如,在下面的查询结构中,名称 1 是分区键,名称 2 是集群键。
CREATE TABLE IF NOT EXISTS
table(column name1 data type,
column name2 data type,
column name3 data type,
PRIMARY KEY(name1,name2))
with clustering order by (name2 DESC);
在此处查找更多信息Cassandra keys