Couchbase N1qlQuery:删除查询服务的原因错误

时间:2016-11-29 06:53:22

标签: couchbase n1ql

我尝试运行此查询

 delete from bucket o
 use keys (select raw ARRAY_CONCAT(ARRAY_CONCAT(ARRAY_CONCAT(d, t), s), u)
 from bucket
 use keys 'SS')

我收到了这个回复:

 {
    "status": "Unexpected server error"
 }

在服务器日志中我看到了:

 Service 'query' exited with status 1. Restarting. Messages: runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20e97cfc0 sp=0xc20e97cfb8
created by github.com/couchbase/query/parser/n1ql.NewLexerWithInit
/home/couchbase/jenkins/workspace/watson-unix/goproj/src/github.com/couchbase/query/parser/n1ql/n1ql.nn.go:30999 +0x4a6c9
[goport] 2016/11/29 08:40:11 /opt/couchbase/bin/cbq-engine terminated: signal: aborted (core dumped)

此查询有什么问题?

我使用的是couchbase 4.5版。

2 个答案:

答案 0 :(得分:1)

您也可以使用ARRAY_FLATTEN()函数或FIRST运算符。

从桶中删除o使用密钥 ARRAY_FLATTEN( )从存储桶使用密钥'SS' )中选择原始ARRAY_CONCAT(ARRAY_CONCAT(ARRAY_CONCAT(d,t),s),u) / em> ,1) 返回meta(o).id;

从桶中删除o 使用键FIRST x FOR x IN              选择原始ARRAY_CONCAT(ARRAY_CONCAT(ARRAY_CONCAT(d,t),s),u)              从斗              使用键'SS'          结束 返回meta(o).id;

请注意,当子查询用作表达式时(例如,作为ARRAY_FLATTEN()或FIRST构造中的参数),需要在子查询周围使用括号(粗体斜体)

答案 1 :(得分:0)

USE KEYS需要一系列键。 ARRAY_CONCAT()返回数组,Subquery返回数组。它成为阵列阵列。

按如下方式删除其中一个数组。

从桶中删除o  使用键(选择原始ARRAY_CONCAT(ARRAY_CONCAT(ARRAY_CONCAT(d,t),s),u)  从斗  使用键' SS')[0];

如果缺少ARRAY_CONCAT()参数或为null,则可能会在4.5中返回相同的恐慌错误。这已在4.5.1中修复。