我是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;
结果如下:
插入指定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定义为Integer而不是时间戳它可以工作。但是,我试图插入col4作为标准化格式yyyy-mm-dd HH:mm(我试过'2011-02-03 01:05'和'2011-02-03 01:05:10' )但它不起作用。
答案 0 :(得分: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
答案 1 :(得分:0)
@mol
很奇怪,尝试将col4插入为Integer(先转换为毫秒)或使用标准化格式: yyyy-mm-dd HH:mm
根据文档 here ,您可以省略时间并输入日期,但似乎在您的案例中打破了某些内容