Cassandra:输入中没有可行的替代方案' IF'

时间:2018-05-18 15:11:52

标签: cassandra cql

此查询:

// 1. Unassigned < assigned // If only one of the pods is unassigned, the unassigned one is smaller // 2. PodPending < PodUnknown < PodRunning // 3. Not ready < ready // 4. Been ready for empty time < less time < more time // If both pods are ready, the latest ready one is smaller // 5. Pods with containers with higher restart counts < lower restart counts // 6. Empty creation time pods < newer pods < older pods

给出了这个错误:

  

在输入中没有可行的替代方案&#39; IF&#39; (... =   2b22da9c-58a6-11e8-ae82-2d3e941502e8 WHERE a_uid = [&#34; 184] 9&#34; IF ...)

我对卡桑德拉很新。 有人可以建议吗?

2 个答案:

答案 0 :(得分:3)

我已经在我的测试环境中尝试了一些修改并且它有效。

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

答案 1 :(得分:3)

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,果然我得到了同样的错误信息。从本质上讲,这里使用引号存在一些混淆。仅在对表或列名称强制执行大小写时才使用双引号。设置或检查TEXT(a_uid)的值时,您应该在1849年左右使用单引号:

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

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

专业提示:另外,我会提醒您不要使用这样的双引号。除非你绝对需要它来匹配Java类的大小写,否则它将使得使用该表变得更加困难。有点像在这里做的。