如何使用datastax java驱动程序将timeuuid插入cassandra或TimeUUID的版本无效

Posted

技术标签:

【中文标题】如何使用datastax java驱动程序将timeuuid插入cassandra或TimeUUID的版本无效【英文标题】:how to insert timeuuid into cassandra using datastax java driver OR Invalid version for TimeUUID 【发布时间】:2013-10-10 07:50:09 【问题描述】:

我在 cassandra 键空间中有一个类型为 timeuuid 的列。当我尝试从 java 代码中插入记录时(使用 DataStax java driver1.0.3)。我得到以下异常

com.datastax.driver.core.exceptions.InvalidQueryException: Invalid version for TimeUUID type.
    at com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:35)
    at com.datastax.driver.core.ResultSetFuture.extractCauseFromExecutionException(ResultSetFuture.java:269)
    at com.datastax.driver.core.ResultSetFuture.getUninterruptibly(ResultSetFuture.java:183)
    at com.datastax.driver.core.Session.execute(Session.java:111)

这是我的示例代码:

PreparedStatement statement = session.prepare("INSERT INTO keyspace:table " +
            "(id, subscriber_id, transaction_id) VALUES (now(), ?, ?);");

BoundStatement boundStatement = new BoundStatement(statement);

Session.execute(boundStatement.bind(UUID.fromString(requestData.getsubscriberId()), 
            requestData.getTxnId()));

我也尝试使用UUIDs.timeBased() 而不是now()。但我得到了同样的例外。

任何有关如何插入/读取 timeuuid 数据类型的帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我错误地创建了

id  uuid

这就是为什么当我尝试在 uuid 类型字段中插入 timeuuid 时出现异常。

现在我已将 id 的类型更改为 timeuuid,一切正常。

【讨论】:

以上是关于如何使用datastax java驱动程序将timeuuid插入cassandra或TimeUUID的版本无效的主要内容,如果未能解决你的问题,请参考以下文章

使用 datastax 驱动程序,如何将非原始列读取为 JSON 字符串?

无法使用 datastax java 驱动程序通过 UDT 键从 cassandra 检索

如何使用 datastax 驱动程序创建 Cassandra 连接池

Datastax Cassandra java驱动集群配置

Datastax Java 驱动程序自定义重试策略

Datastax Cassandra Java 驱动程序 WARN 消息