Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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
Cassandra-在输入端没有可行的替代方案';(';_Cassandra_Cassandra 2.0_Cassandra 3.0 - Fatal编程技术网

Cassandra-在输入端没有可行的替代方案';(';

Cassandra-在输入端没有可行的替代方案';(';,cassandra,cassandra-2.0,cassandra-3.0,Cassandra,Cassandra 2.0,Cassandra 3.0,我正在尝试执行一个简单的Cassandra table语句。我遇到了这样一个错误。我对它有点陌生 我的问题是: create table orders ( id bigint, order_number bigint, supplier_id bigint, planned_delivery_date timestamp, flow_type int, store_number bigint, tenantid text, qc_locked boolean,

我正在尝试执行一个简单的Cassandra table语句。我遇到了这样一个错误。我对它有点陌生

我的问题是:

create table orders
(
  id bigint,
  order_number bigint,
  supplier_id bigint,
  planned_delivery_date timestamp,
  flow_type int,
  store_number bigint,
  tenantid text,
  qc_locked boolean,
  qc_locked_by text,
  qc_finished_at timestamp,
  qc_finished_by text,
  qc_reviewed_at timestamp,
  qc_reviewed_by text,
  PRIMARY KEY (id,flow_type,supplier_id,(tenantid,order_number))
);
我收到一个错误,如下所示:

SyntaxException: <ErrorMessage code=2000 [Syntax error in CQL query] message="li
ne 17:40 no viable alternative at input '(' (... KEY (id,flow_type,supplier_id,[
(]...)">
语法异常:

如果您试图使用复合分区键创建一个表,则需要在构成主键部分的列周围使用括号,而不是在其余的集群键周围

这将有助于:

create table orders
(
  id bigint,
  order_number bigint,
  supplier_id bigint,
  planned_delivery_date date,
  flow_type int,
  store_number bigint,
  tenantid text,
  qc_locked boolean,
  qc_locked_by text,
  qc_finished_at date,
  qc_finished_by text,
  qc_reviewed_at date,
  qc_reviewed_by text,
  PRIMARY KEY ((id,flow_type,supplier_id),tenantid,order_number)
);

如果您试图创建一个具有复合分区键的表,那么需要在构成主键部分的列周围使用括号,而不是在其余的集群键周围

这将有助于:

create table orders
(
  id bigint,
  order_number bigint,
  supplier_id bigint,
  planned_delivery_date date,
  flow_type int,
  store_number bigint,
  tenantid text,
  qc_locked boolean,
  qc_locked_by text,
  qc_finished_at date,
  qc_finished_by text,
  qc_reviewed_at date,
  qc_reviewed_by text,
  PRIMARY KEY ((id,flow_type,supplier_id),tenantid,order_number)
);

在Cassandra中,主键有两部分:分区键(必需)和集群键(可选)

  • 使用分区键可以指定Cassandra如何在 节点
  • 使用集群键可以指定Cassandra如何在每个 节点
在表单中创建表时指定主键

PRIMARY KEY (f1, f2, f3, f4)
默认情况下,第一个元素(此处
f1
)是分区键,之后的任何字段(此处
f2、f3、f4
)都被视为集群键

如果要设置包含多个字段的分区键,应首先将它们放在括号中。例如,在代码中,假设
id、flow\u type、supplier\u id
是分区键,则应使用:

create table orders
(
  id bigint,
  order_number bigint,
  supplier_id bigint,
  planned_delivery_date timestamp,
  flow_type int,
  store_number bigint,
  tenantid text,
  qc_locked boolean,
  qc_locked_by text,
  qc_finished_at timestamp,
  qc_finished_by text,
  qc_reviewed_at timestamp,
  qc_reviewed_by text,
  PRIMARY KEY ((id,flow_type,supplier_id),tenantid,order_number)
);
注意:查询中的条件(如where语句)只能使用作为主键一部分的字段(分区键和群集键)和具有辅助索引的字段。例如,不能对该表使用以下查询:

SELECT * FROM orders WHERE qc_reviewed_by == "A" ;

在Cassandra中,主键有两部分:分区键(必需)和集群键(可选)

  • 使用分区键可以指定Cassandra如何在 节点
  • 使用集群键可以指定Cassandra如何在每个 节点
在表单中创建表时指定主键

PRIMARY KEY (f1, f2, f3, f4)
默认情况下,第一个元素(此处
f1
)是分区键,之后的任何字段(此处
f2、f3、f4
)都被视为集群键

如果要设置包含多个字段的分区键,应首先将它们放在括号中。例如,在代码中,假设
id、flow\u type、supplier\u id
是分区键,则应使用:

create table orders
(
  id bigint,
  order_number bigint,
  supplier_id bigint,
  planned_delivery_date timestamp,
  flow_type int,
  store_number bigint,
  tenantid text,
  qc_locked boolean,
  qc_locked_by text,
  qc_finished_at timestamp,
  qc_finished_by text,
  qc_reviewed_at timestamp,
  qc_reviewed_by text,
  PRIMARY KEY ((id,flow_type,supplier_id),tenantid,order_number)
);
注意:查询中的条件(如where语句)只能使用作为主键一部分的字段(分区键和群集键)和具有辅助索引的字段。例如,不能对该表使用以下查询:

SELECT * FROM orders WHERE qc_reviewed_by == "A" ;

定义主键的语法错误,在主键中,第一部分是分区键,第二部分是集群列

主键(分区键、集群列)

定义主键时,可以使用复合键或复合键

复合键:
多列主键称为复合键:主键(分区键、集群列)

复合键:
基于多列的分区键:主键((分区键1,分区键2))

注:

如果使用复合键,则查询中的where子句应包含用于定义分区键的所有列。

定义主键的语法错误,在主键中,第一部分是分区键,第二部分是群集列

主键(分区键、集群列)

定义主键时,可以使用复合键或复合键

复合键:
多列主键称为复合键:主键(分区键、集群列)

复合键:
基于多列的分区键:主键((分区键1,分区键2))

注:

如果使用复合键,则查询中的where子句应包含用于定义分区键的所有列。

通过向(tenantid,order\u number)添加一组额外的括号,您希望实现什么?这两个是复合唯一键。我不太清楚,如何在Cassandra中指定复合唯一键,如果我错了,请帮助我发布提示:我注意到你添加了很多闲聊/恳求材料(我需要帮助,请帮助我,有人能帮我吗,等等)。你可能会发现这会激怒以英语为母语的人,因此实际上并不鼓励人们提供帮助;无论如何,既然你将其添加到所有问题中,那么志愿者编辑就需要做更多的工作,他们喜欢删减这类内容。如果你以后能删减,谢谢你。@Sun请选择一个答案作为正确答案如果有帮助的话!你想通过在(tenantid,order_number)中添加一组额外的括号来实现什么?这两个是复合唯一键。我不太清楚,如何在Cassandra中指定复合唯一键,如果我错了,请帮我发布提示:我注意到你添加了很多闲聊/辩护材料(我需要帮助,请帮助我,有人能帮忙吗等)。你可能会发现这会激怒以英语为母语的人,因此实际上并不鼓励人们提供帮助;无论如何,既然你将其添加到所有问题中,那么志愿者编辑就需要做更多的工作,他们喜欢删减这类内容。如果你以后能删减,谢谢你。@Sun请选择一个答案作为正确答案如果有帮助的话!