Cassandra: вставка ошибки timeuuid

У меня есть следующая таблица

create table test(
         userId varchar,
         notifId timeuuid,
         notification varchar,
         time bigint,read boolean,
         primary key(userId, notifId)) with clustering order by (notifId desc);

Я запускаю следующий запрос:

PreparedStatement   pstmt  = session.prepare("INSERT INTO notifications(userId, notifId, notification, time, read) VALUES(?, now(), ?, ?, ?)");

BoundStatement      boundStatement  = new BoundStatement(pstmt);
        session.execute(boundStatement.bind("123", "hello", new Date().getTime(), false));

Я получаю следующую ошибку:

Exception in thread "main" com.datastax.driver.core.exceptions.InvalidQueryException: Type error: cannot assign result of function now (type timeuuid) to notifid (type 'org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.TimeUUIDType)')
    at com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:35)
    at com.datastax.driver.core.ResultSetFuture.extractCause(ResultSetFuture.java:277)
    at com.datastax.driver.core.Session.toPreparedStatement(Session.java:281)
    at com.datastax.driver.core.Session.prepare(Session.java:172)
    at com.example.cassandra.SimpleClient.loadData(SimpleClient.java:130)
    at com.example.cassandra.SimpleClient.main(SimpleClient.java:214)
Caused by: com.datastax.driver.core.exceptions.InvalidQueryException: Type error: cannot assign result of function now (type timeuuid) to notifid (type 'org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.TimeUUIDType)')
    at com.datastax.driver.core.ResultSetFuture.convertException(ResultSetFuture.java:307)

Я использую кассандру 1.2.2.


person Manish Kumar    schedule 21.04.2014    source источник


Ответы (2)


Вы должны вставить timeuuid, сгенерированный драйвером datastax. В вашем случае, поскольку вы используете timeuuid версии 1, вы должны использовать

UUIDs.timeBased()

Вы можете найти вышеизложенное в следующей ссылке

http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/utils/UUIDs.html

person Ananth    schedule 21.04.2014
comment
и путь к этому классу import com.datastax.driver.core.utils.UUIDs - person ssuperczynski; 12.02.2016

Похоже на ошибку (похоже или совпадает с https://issues.apache.org/jira/browse/CASSANDRA-5472) и вы используете довольно старую версию Cassandra. Я рекомендую вам обновиться до последней версии 1.2.x, повторно протестировать ваш сценарий и сообщить о проблеме, если проблема не устранена.

person Mikhail Stepura    schedule 21.04.2014