【问题标题】:Cassandra CQL unable to insert (no viable alternative at input)Cassandra CQL 无法插入(输入时没有可行的替代方案)
【发布时间】:2011-08-19 19:06:21
【问题描述】:

在设置 cassandra (0.8.4) 并通过 CLI 使用插入和选择进行测试后,我继续使用 CQL 使用 JDBC (1.0.3)。

这是我在下面的代码中遇到 SQLException 的地方,知道吗?

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);

例外:

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)

【问题讨论】:

    标签: java jdbc cassandra cql


    【解决方案1】:

    first 是 CQL 关键字,需要用引号引起来。试试:

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

    【讨论】:

    • 在 CQL 控制台中尝试过,但对我不起作用:cqlsh:testfamily> INSERT INTO tags ('KEY', 'first', 'last', 'age') VALUES ( 'Jones', 'Jones', 'Lang', '32'); Bad Request: line 1:42 no viable alternative at input 'age'
    • 这个错误是指解析问题。真正的潜在问题是它期望 'age' 是一个整数,但你传递的是一个字符串。
    猜你喜欢
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    相关资源
    最近更新 更多