Cassandra:输入时没有可行的替代方案 'IF'
Cassandra: no viable alternative at input 'IF'
此查询:
UPDATE jdtestbysentence."sparseSupplement" SET uuid = 2b22da9c-58a6-11e8-ae82-2d3e941502e8 WHERE a_uid = "1849" IF EXISTS
出现此错误:
no viable alternative at input 'IF' (...=
2b22da9c-58a6-11e8-ae82-2d3e941502e8 WHERE a_uid = ["184]9" IF...)
我对 Cassandra 还很陌生。
有人可以建议吗?
我已经在我的测试环境中对您的查询进行了一些修改,并且成功了。
UPDATE jdtestbysentence."sparseSupplement" SET uuid = 2b22da9c-58a6-11e8-ae82-2d3e941502e8 WHERE a_uid = '1849' IF EXISTS
UPDATE jdtestbysentence."sparseSupplement"
SET uuid = 2b22da9c-58a6-11e8-ae82-2d3e941502e8 WHERE a_uid = "1849" IF EXISTS
好的,所以我在本地创建了你的 table,如下所示:
CREATE TABLE "sparseSupplement" (uuid UUID, a_uid TEXT PRIMARY KEY);
我 运行 你的 CQL 更新,果然我收到了同样的错误信息。本质上,这里对引号的使用存在一些混淆。双引号仅在对 table 或列名强制区分大小写时使用。设置或检查 TEXT (a_uid
) 的值时,您应该在 1849 左右使用单引号:
cassdba@cqlsh:Whosebug> UPDATE "sparseSupplement"
SET uuid = 2b22da9c-58a6-11e8-ae82-2d3e941502e8
WHERE a_uid = '1849' IF EXISTS;
[applied]
-----------
False
专业提示:另外,我要提醒您不要那样使用双引号。除非你绝对需要它来将大小写与 Java class 匹配,否则它只会使 table 的工作变得更加困难。有点像它在这里做的。
此查询:
UPDATE jdtestbysentence."sparseSupplement" SET uuid = 2b22da9c-58a6-11e8-ae82-2d3e941502e8 WHERE a_uid = "1849" IF EXISTS
出现此错误:
no viable alternative at input 'IF' (...= 2b22da9c-58a6-11e8-ae82-2d3e941502e8 WHERE a_uid = ["184]9" IF...)
我对 Cassandra 还很陌生。 有人可以建议吗?
我已经在我的测试环境中对您的查询进行了一些修改,并且成功了。
UPDATE jdtestbysentence."sparseSupplement" SET uuid = 2b22da9c-58a6-11e8-ae82-2d3e941502e8 WHERE a_uid = '1849' IF EXISTS
UPDATE jdtestbysentence."sparseSupplement"
SET uuid = 2b22da9c-58a6-11e8-ae82-2d3e941502e8 WHERE a_uid = "1849" IF EXISTS
好的,所以我在本地创建了你的 table,如下所示:
CREATE TABLE "sparseSupplement" (uuid UUID, a_uid TEXT PRIMARY KEY);
我 运行 你的 CQL 更新,果然我收到了同样的错误信息。本质上,这里对引号的使用存在一些混淆。双引号仅在对 table 或列名强制区分大小写时使用。设置或检查 TEXT (a_uid
) 的值时,您应该在 1849 左右使用单引号:
cassdba@cqlsh:Whosebug> UPDATE "sparseSupplement"
SET uuid = 2b22da9c-58a6-11e8-ae82-2d3e941502e8
WHERE a_uid = '1849' IF EXISTS;
[applied]
-----------
False
专业提示:另外,我要提醒您不要那样使用双引号。除非你绝对需要它来将大小写与 Java class 匹配,否则它只会使 table 的工作变得更加困难。有点像它在这里做的。