此查询:
// 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 ...)
我对卡桑德拉很新。 有人可以建议吗?
答案 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类的大小写,否则它将使得使用该表变得更加困难。有点像在这里做的。