オンラインドキュメントから:CQL 3テーブルの主キーには任意の数(1つ以上)のコンポーネント列を含めることができますが、主キーの一部ではない列が少なくとも1つ存在する必要があります。
その理由は何ですか?
CQLの複合キーの列のみで行を挿入しようとしました。SELECTすると見えない
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を使用すると、次のように表示されます。
default@demo] 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の結果:
[default@demo] list demo;
Using default limit of 100
Using default column limit of 100
-------------------
RowKey: 100
invalid UTF8 bytes 0000ab7240ab7580
[default@demo]
何か案が?
更新:CLIが無効なUTF8バイト0000ab7240ab7580を返す理由を見つけました。これは、CQL3から作成されたテーブルと互換性がありません。コンパクトストレージオプションを使用すると、CLIの値が正しく表示されます。