从联机文档: CQL 3表的主键可以具有任意数量(1个或多个)组件列,但必须至少有一列不是主键的一部分。组合列的原因是什么,必须至少有一列不是主键的一部分
这是什么原因?
我试着只在CQL中的组合键中插入一行。我不能看到它时,我做的选择
cqlsh:demo> CREATE TABLE DEMO (
user_id bigint,
dep_id bigint,
created timestamp,
lastupdated timestamp,
PRIMARY KEY (user_id, dep_id)
);
cqlsh:demo> INSERT INTO DEMO (user_id, dep_id)
... VALUES (100, 1);
cqlsh:demo> select * from demo;
cqlsh:demo>
但是当我使用CLI,它显示了一句:
[email protected]] list demo;
Using default limit of 100
Using default column limit of 100
-------------------
RowKey: 100
1 Row Returned.
Elapsed time: 27 msec(s).
但无法看到列的值。
后,我补充这是不是在主键列,该值显示出来的CQL
cqlsh:demo> INSERT INTO DEMO (user_id, dep_id, created)
... VALUES (100, 1, '7943-07-23');
cqlsh:demo> select * from demo;
user_id | dep_id | created | lastupdated
---------+--------+--------------------------+-------------
100 | 1 | 7943-07-23 00:00:00+0000 | null
结果从CLI:
[[email protected]] list demo;
Using default limit of 100
Using default column limit of 100
-------------------
RowKey: 100
invalid UTF8 bytes 0000ab7240ab7580
[[email protected]]
任何想法?
更新:我发现CLI返回无效UTF8字节0000ab7240ab7580的原因,它与为CQL3创建的表不兼容,如果我使用紧凑存储选项,则CLI显示的值正确。
挖了多一点后,行确实加了,但是如果我使用SELECT * FROM tableName,它不会返回,除非我添加了不属于主键的列。 –