2013-09-25 3 views
2

Je suis nouveau dans Cassandra et j'ai du mal à insérer des lignes dans une base de données obtenir l'erreur de la Titre. J'utilise cassandra 1.0.8 et cqlsh pour faire des changements dans ma base de données.ERREUR CASSANDRA: codec 'ascii' ne peut pas décoder bye 0xe1 en position 27: ordinal pas dans la plage (128) cqlsh

Ensuite, je lui explique les étapes données avant que je l'erreur:

CREER UNE FAMILLE DE LA COLONNE

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

INSERT RANGS PLUSIEURS SANS SPECIFICYING TOUTES LES COLONNES DU TABLEAU

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

CHOISIR POUR VÉRIFIER QUE LES RANGÉES ONT ÉTÉ INSÉRÉES CORRECTEMENT

select * from test; 

Le résultat est le suivant:

Result of select * from test

insèrera une ligne SPECIFICYING UNE VALEUR DE col4 (NON SPECIFIE AVANT)

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

SELECT POUR ETRE ASSURE QUE ROW A ÉTÉ CORRECTEMENT INSÉRÉES

select * from test; 

Dans ce SELECT est l'erreur. Le résultat est le suivant:

enter image description here

sélectionner chaque colonne du tableau SÉPARÉMENT

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

il fonctionne très bien et montre les bonnes valeurs:

enter image description here

Ensuite, mon question est: quel est le problème dans le premier SELECT? Qu'est-ce qui ne va pas?

Merci d'avance !!

REMARQUE:

Si je définis col4 entier plutôt qu'un horodatage cela fonctionne. Cependant, j'ai essayé d'insérer col4 comme format normalisé aaaa-mm-jj HH: mm (j'ai essayé avec '2011-02-03 01:05' et '2011-02-03 01:05:10') mais ça ne marche pas.

Répondre

1

Cassandra 1.0.8 livré avec CQL2 et c'est là que votre problème vient. J'ai réussi à recréer cela dans 1.0.8 mais ça marche bien avec 1.2.x donc mon conseil est mise à niveau si vous le pouvez.

En 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 
0

@mol

Bizarre, essayez d'insérer col4 comme Integer (convertir en millisecondes premier) ou utiliser le format normalisé: aaaa-mm-jj HH: mm

Accodring à la doc here, vous pouvez omettre l'heure et juste entrer la date, mais il semble que casse quelque chose dans votre cas

+0

Lorsque je tente d'insérer col4 comme numériques.Elle fonctionne. Cependant, j'ai essayé d'insérer col4 comme format normalisé aaaa-mm-jj HH: mm (j'ai essayé avec '2011-02-03 01:05' et '2011-02-03 01:05:10') mais ça ne marche pas. Merci!! – mol

+0

Probablement un bug de cqlsh ou de Cassandra avec le décodage de la date. Quelle version de Cassandra utilisez-vous? – doanduyhai

Questions connexes