繁体   English   中英

Cassandra 错误代码 = 2200 [无效查询] 消息 =“物化视图 'op' 的主键中引用了未知列”

[英]Cassandra error code=2200 [invalid query] message=“unknown column referenced in primary key for materialized view 'op'”

我是 Cassandra 的新手,我正在尝试创建一个物化视图。 但它不起作用。 下面是表和物化视图定义以及错误代码-

桌子

CREATE TABLE my_keyspace.my_table (
    customerno text,
    operatorname text,
    customername text,
    operatorno text,
PRIMARY KEY (customerno));

物化视图

CREATE MATERIALIZED VIEW op
AS SELECT operatorname,operatorno 
FROM my_keyspace.my_table
WHERE operatorname IS NOT NULL AND customerno IS NOT NULL 
PRIMARY KEY (operatorname, customerno);

创建物化视图时出现错误消息

invalidrequest: error from server: code=2200 [invalid query] 
message="unknown column customerno referenced in primary key
for materialized view 'op'"

customerno是基表中的主键。

该错误表明customerno也需要位于基表的SELECT子句中。 这应该有效:

> CREATE MATERIALIZED VIEW op AS SELECT operatorname, operatorno, customerno
  FROM stackoverflow.customer_table 
  WHERE operatorname IS NOT NULL AND customerno IS NOT NULL
  PRIMARY KEY (operatorname, customerno);

要补充 Aaron 的答案,您似乎正在运行旧版本的 Cassandra。

在 3.0+ 和 3.11 的更高版本中,基表的所有主键列都会自动包含在内,因此您的CREATE语句应该可以正常工作。

例如,如果我在 C* 3.0.10 上运行它(在SELECT子句中没有customerno ):

CREATE MATERIALIZED VIEW op
  AS SELECT operatorname,operatorno 
  FROM my_keyspace.my_table
  WHERE operatorname IS NOT NULL AND customerno IS NOT NULL 
  PRIMARY KEY (operatorname, customerno);

视图上的DESCRIBE返回:

cqlsh> DESCRIBE MATERIALIZED VIEW my_keyspace.op;

CREATE MATERIALIZED VIEW my_keyspace.op AS
    SELECT operatorname, customerno, operatorno
    FROM my_keyspace.my_table
    WHERE operatorname IS NOT NULL AND customerno IS NOT NULL
    PRIMARY KEY (operatorname, customerno)
    WITH CLUSTERING ORDER BY (customerno ASC)
    ...

自动包含customerno

    ...
    SELECT operatorname, customerno, operatorno
    ...

干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM