如何在cassandra中更新timeuuid列

emeijp43  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(354)

如何更新 timeuuid Cassandra专栏?
我尝试了以下查询

cqlsh:mydb> UPDATE mytable SET mycolumn = '99b47d70-b465-11e9-8080-808080808080' WHERE mycolumn= '99a53b30-b465-11e9-8080-808080808080';

它失败了,有个消息
invalidrequest:来自服务器的错误:code=2200[invalid query]message=“timeuuid类型的”mycolumn“的字符串常量(99b47d70-b465-11e9-8080-8080)无效”
所以我尝试将常量值转换为timeuuid

cqlsh:mydb> UPDATE mytable SET mycolumn = cast('99b47d70-b465-11e9-8080-808080808080' as timeuuid) WHERE mycolumn= cast('99a53b30-b465-11e9-8080-808080808080' as timeuuid);

这次失败了,出现了错误
语法异常:第1行:34在输入“(”(update mytable set mycolumn=cast)处没有可行的替代项
我看到了有关cast函数的文档 timeuuid 未在任何其他类型的输出类型下列出。
https://docs.datastax.com/en/dse/5.1/cql/cql/cql_reference/refcqlfunction.html#refcqlfunction__cast
这是否意味着timeuuid列一旦创建就不能更新?
更新:我在上一页看到了以下信息
update语句set子句不能用于更改主键字段;因此,只有当目标字段不是主键字段的一部分时,才能设置新的timeuuid。
因此,可以更新timeuuid列。 mycolumn 不是主键的一部分。
更新2:
即使下面的命令也会失败,并出现相同的错误 no viable alternative at input ```
UPDATE website SET api_key = api_key WHERE 1;

我做错了什么?
wtlkbnrh

wtlkbnrh1#

我找到了通过cqlsh(cassandra)插入硬编码uuid的解决方案
你不应该在uuid周围加引号来阻止它被解释为一个字符串。
没有必要引用uuid

相关问题