ERROR CASSANDRA:'ascii'编解码器无法解码位置27的再见0xe1:序数不在范围内(128)cqlsh

时间:2013-09-25 19:05:29

标签: cassandra cqlsh

我是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;

结果如下:

Result of select * from test

插入指定col4值的行(未指定之前)

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

选择检查行是否正确插入

select * from test;

在此SELECT中是错误。结果如下:

enter image description here

单独选择表中的每个列

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

它工作正常并显示正确的值:

enter image description here

然后,我的问题是:第一个SELECT中的问题是什么?怎么了?

提前致谢!!

注:

如果我将col4定义为Integer而不是时间戳它可以工作。但是,我试图插入col4作为标准化格式yyyy-mm-dd HH:mm(我试过'2011-02-03 01:05'和'2011-02-03 01:05:10' )但它不起作用。

2 个答案:

答案 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 ,您可以省略时间并输入日期,但似乎在您的案例中打破了某些内容