【问题标题】:Setting TTLs when inserting into Cassandra with the Datastax CQL driver使用 Datastax CQL 驱动程序插入 Cassandra 时设置 TTL
【发布时间】:2013-11-06 23:57:11
【问题描述】:

谁能告诉我为什么这不起作用?它似乎没有设置 TTL;这些列永远不会被删除。但是,在 cqlsh 中使用 INSERT INTO 确实可以,因此 Cassandra 本身没有任何问题。

    StringBuffer cql = new StringBuffer("INSERT INTO ");
    cql.append(getKeyspace());
    cql.append(".taskitems ");
    cql.append(/* long field list */);
    cql.append(" VALUES ");
    cql.append("(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) USING TTL 30");
    //cql.append(getTimeToLive()); // commented out, trying hardcoded value above

    PreparedStatement statement = session.prepare(cql.toString());

    session.execute( statement.bind(
        /* lots o' fields */    
    ));

(Cassandra v2.0.0,驱动程序 v1.0。)

【问题讨论】:

    标签: java cassandra datastax-java-driver


    【解决方案1】:

    您的问题是由于 datastax-java-driver 和 Cassandra 之间的驱动程序不匹配(两者都应该是 v1 或两者都应该是 v2) - 尝试将 datastax-java-driver 升级到 v2。

    还值得使用 datastax-java-driver QueryBuilder,它比手动构建字符串查询更不容易出错。 (datastax-java-driver v1 QueryBuilder javadocs 是here。)

    【讨论】:

    • 哈!你成功了;将库更改为最新的(2.0.0-rc1)似乎已经修复了它。好搭档。
    • 酷,更新我的答案以删除“可以”;-)
    猜你喜欢
    • 2016-11-14
    • 2019-04-18
    • 2016-01-22
    • 2017-05-25
    • 2013-03-02
    • 2016-11-29
    • 2018-09-26
    • 2016-02-27
    • 2017-01-20
    相关资源
    最近更新 更多