2

私は Cassandra の初心者で、タイトルのエラーを取得するデータベースに行を挿入する際に問題があります。

データベースの変更には cassandra 1.0.8 と cqlsh を使用しています。

次に、エラーが発生する前に、指定された手順を説明します。

列ファミリーを作成する

CREATE TABLE test (
    col1 int PRIMARY KEY,
col2 bigint, 
col3 boolean,
col4 timestamp
);

テーブルのすべての列を指定せずにいくつかの行を挿入する

insert into test (col1, col2, col3) values (1, 100, true);
insert into test (col1, col2, col3) values (2, 200, false);

行が正しく挿入されたことを確認するための選択

select * from test;

結果は次のとおりです。

select * from test の結果

col4 の値を指定する行を挿入します (以前は指定されていません)

insert into test (col1, col2, col3, col4) values (3, 100, true, '2011-02-03');

行が正しく挿入されたことを確認するための選択

select * from test;

この SELECT にエラーがあります。結果は次のとおりです。

ここに画像の説明を入力

テーブルの各列を個別に選択する

select col1 from test;
select col2 from test;
select col3 from test;
select col4 from test;

それは正常に動作し、正しい値を示しています:

ここに画像の説明を入力

次に、私の質問は次のとおりです。最初の SELECT の問題は何ですか? どうしたの?

前もって感謝します!!

ノート:

col4 をタイムスタンプではなく整数として定義すると、機能します。ただし、col4 を正規化された形式 yyyy-mm-dd HH:mm として挿入しようとしました ('2011-02-03 01:05' と '2011-02-03 01:05:10' で試しました)。 )しかし、それは動作しません。

4

2 に答える 2

1

Cassandra 1.0.8 には CQL2 が同梱されており、それが問題の原因です。これを 1.0.8 で再作成することはできましたが、1.2.x でも問題なく動作するので、可能であればアップグレードすることをお勧めします。

C* 1.2.10 で

cqlsh> update db.user set date='2011-02-03 01:05' where user='JCTYpjJlM';
cqlsh> SELECT  * from db.user ;    

 user      | date                     | password
-----------+--------------------------+----------
 xvkYQKerQ |                     null |      765
 JCTYpjJlM | 2011-02-03 01:05:00+0200 |      391
于 2013-09-26T01:18:57.533 に答える
0

@モル

奇妙なことに、col4 を整数として挿入する (最初にミリ秒に変換する) か、正規化された形式を使用してみてください: yyyy-mm-dd HH:mm

ここのドキュメントによると、時間を省略して日付を入力するだけでかまいませんが、あなたのケースでは何かが壊れているようです

于 2013-09-25T19:22:39.357 に答える