CREATE TABLE IF NOT EXISTS Social ("partitionId" text,"name" text, "id" text, "data1" text, "data2" text, "data3" map<text,text>, "data4 boolean, "data5" map<text, text>, primary key ("partitionId","name","id"));
const newValue = Object.values({
sId: '6e4d02ddc56bb014fee',
sData: '{"stamina":"yes"}',
rId: 'b1a264ed-b3ss9270316',
re: '101-r'
});
const q = 'UPDATE social SET "data5[?] = ? WHERE "partitionId" = \'social\' AND "id" = ? AND "name" = ?;';
client.execute(q, newValue, { prepare: true }).then(result => console.log(result.wasApplied()));
输出:
UnhandledPromiseRejectionWarning:ResponseError:未定义的列名称data5 在FrameReader.readError
我正在使用nodejs cassandra驱动程序来更新数据类型映射的列data5,但出现上述错误。有人可以帮忙吗?
答案 0 :(得分:1)
我几次尝试都找到了解决方案。 经过Cassandra文档的一些研究,我发现了这一点:
Cassandra默认将所有表/列名称转换为小写。如果需要区分大小写的表/列名,则将其用双引号引起来。
所以,我已经修改了查询:
const q = 'UPDATE Social SET "data5"[?] = ? WHERE "partitionId" = \'router\' AND "id" = ? AND "name" = ?;';
成功了。