cassandra
  • cql
  • cqlsh
  • 2016-04-06 3 views 4 likes 
    4

    Я пытаюсь обновить существующий элемент в моей Кассандры БД с помощью cqlsh:Кассандры: Невозможно принуждать «2016-04-06 13: 06: 11.534000» на отформатированную дату (удлиненная)

    $ > UPDATE allEvents SET "isLastEvent" = True WHERE "websiteId" = 'sd-8231' 
    AND "purchaser" = False 
    AND "currentTime" = '2016-04-06 13:06:11.534000'; 
    

    И Я получил это:

    InvalidRequest: код = 2200 [Неверный запрос] сообщение = "Невозможно принуждать '2016-04-06 13: 06: 11,534000' на отформатированную дату (длинный)"

    В случае, если это может помочь:

    $ > show version 
    [cqlsh 5.0.1 | Cassandra 3.0.2 | CQL spec 3.3.1 | Native protocol v4] 
    
    +0

    Вам нужна дополнительная точность? Тип временной отметки Кассандры будет поддерживать только миллисекунды. Если вам нужна более высокая точность, вы можете использовать тип timeuuid (UUIDv1), который соответствует 100 наносекундным интервалам. – fromanator

    ответ

    9

    Это потому, что временные метки Cassandra поддерживают только миллисекунды. Ваш currentTime имеет слишком высокую точность. Отрежьте последние три нуля, и это должно работать:

    UPDATE allEvents SET "isLastEvent" = True 
    WHERE "websiteId" = 'sd-8231' 
         AND "purchaser" = False 
         AND "currentTime" = '2016-04-06 13:06:11.534'; 
    
    +0

    Спасибо за ваш ответ, но почему это не имеет значения, когда я вставил его? – farhawa

    +1

    @farhawa Я предполагаю, что любой клиент, который вы используете для вставки данных в Cassandra, обрабатывает вставку иначе, чем обновления, и молча удаляет лишнюю точность. – fromanator

     Смежные вопросы

    • Нет связанных вопросов^_^