Кассандра: нет подходящей альтернативы при вводе 'IF' - PullRequest
0 голосов
/ 18 мая 2018

Этот запрос:

UPDATE jdtestbysentence."sparseSupplement" SET uuid = 2b22da9c-58a6-11e8-ae82-2d3e941502e8 WHERE a_uid = "1849" IF EXISTS

выдает эту ошибку:

нет приемлемой альтернативы на входе 'IF' (... = 2b22da9c-58a6-11e8-ae82-2d3e941502e8 ГДЕ a_uid = ["184] 9" ЕСЛИ ...)

Я довольно новичок в Кассандре.Может кто-нибудь посоветовать?

Ответы [ 2 ]

0 голосов
/ 18 мая 2018
UPDATE jdtestbysentence."sparseSupplement"
SET uuid = 2b22da9c-58a6-11e8-ae82-2d3e941502e8 WHERE a_uid = "1849" IF EXISTS

Хорошо, я создал вашу таблицу на своем локальном компьютере следующим образом:

CREATE TABLE "sparseSupplement" (uuid UUID, a_uid TEXT PRIMARY KEY);

Я запустил ваше CQL UPDATE и, конечно же, получил то же сообщение об ошибке.По сути, здесь есть некоторая путаница вокруг использования кавычек.Двойные кавычки должны использоваться только при применении регистра в имени таблицы или столбца.При установке или проверке значения ТЕКСТА (a_uid) вы должны использовать одинарные кавычки около 1849 года:

cassdba@cqlsh:stackoverflow> UPDATE "sparseSupplement"
    SET uuid = 2b22da9c-58a6-11e8-ae82-2d3e941502e8
    WHERE a_uid = '1849' IF EXISTS;

 [applied]
-----------
     False

Pro-tip: Кроме того, я бы предостерег вас от использования таких двойных кавычек.Если вам абсолютно не нужно сопоставлять регистр с классом Java, это только усложнит работу с этой таблицей.Вроде как здесь.

0 голосов
/ 18 мая 2018

Я попробовал ваш запрос с некоторыми изменениями в моей тестовой среде, и он сработал.

UPDATE jdtestbysentence."sparseSupplement" SET uuid = 2b22da9c-58a6-11e8-ae82-2d3e941502e8 WHERE a_uid = '1849' IF EXISTS
...