我的CQL存在问题,cassandra给出了no viable alternative at input '(' (...WHERE id = ? if [(]...)
错误消息。我认为我的陈述存在问题。
UPDATE <TABLE> USING TTL 300
SET <attribute1> = 13381990-735b-11e5-9bed-2ae6d3dfc201
WHERE <attribute2> = dfa2efb0-7247-11e5-a9e5-0242ac110003
IF (<attribute1> = null OR <attribute1> = 13381990-735b-11e5-9bed-2ae6d3dfc201) AND <attribute3> = 0;
任何想法都是关于声明的问题吗?
答案 0 :(得分:2)
这将有助于您拥有完整的表格结构,因此为了测试您的陈述,我做了一些有根据的猜测。
使用此表:
CREATE TABLE lwtTest (attribute1 timeuuid, attribute2 timeuuid PRIMARY KEY, attribute3 int);
只要我不在末尾添加轻量级事务,此语句就可以工作:
UPDATE lwttest USING TTL 300 SET attribute1=13381990-735b-11e5-9bed-2ae6d3dfc201
WHERE attribute2=dfa2efb0-7247-11e5-a9e5-0242ac110003;
您的轻量级交易......
IF (attribute1=null OR attribute1=13381990-735b-11e5-9bed-2ae6d3dfc201) AND attribute3 = 0;
......有一些问题。
请记住这些要点,以下UPDATE和轻量级事务运行时没有错误:
UPDATE lwttest USING TTL 300 SET attribute1=13381990-735b-11e5-9bed-2ae6d3dfc201
WHERE attribute2=dfa2efb0-7247-11e5-a9e5-0242ac110003
IF attribute1=13381990-735b-11e5-9bed-2ae6d3dfc201 AND attribute3=0;
[applied]
-----------
False