2011-08-19 8 views
4

Après avoir installé cassandra (0.8.4) et testé avec insert et select via CLI, je passe à JDBC (1.0.3) avec CQL.Cassandra CQL impossible d'insérer (aucune alternative viable en entrée)

C'est où, je rencontre SQLException sur le code suivant, une idée?

Connection conn = DriverManager.getConnection(url);    

String sql = "INSERT INTO row (KEY, first, last, age) VALUES ('Jones', 'Jones', 'Lang', '32');"; // internal error 
Statement stmt = conn.createStatement(); 
stmt.execute(sql); 

L'exception:

java.sql.SQLException: line 1:22 no viable alternative at input 'first' 
at org.apache.cassandra.cql.jdbc.CassandraStatement.execute(CassandraStatement.java:160) 
at Cassandra.Insert.main(Insert.java:22) 

Répondre

7

first est un mot-clé CQL, vous devez le mettre entre guillemets. Essayez:

String sql = "INSERT INTO row ('KEY', 'first', 'last', 'age') VALUES ('Jones', 'Jones', 'Lang', '32');"; 
+0

tryed ceux dans la console CQL, mais il ne fonctionne pas pour moi: 'cqlsh: testfamily> INSERT INTO balises ('KEY', 'première', 'dernier', 'âge') VALEURS ('Jones', 'Jones', 'Lang', '32'); Mauvaise demande: ligne 1:42 aucune alternative viable à l'entrée 'age'' – FelikZ

+0

Cette erreur fait référence à un problème d'analyse syntaxique. Le vrai problème sous-jacent est qu'il attend un entier pour 'age' mais vous lui passez une chaîne. – BushMinusZero

Questions connexes