我正在使用Java 2.7 SDK试验Java和Couchbase 6.0社区版。
我正在尝试从我的Java应用程序Couchbase Java 2.7 SDK执行一个简单的更新查询:
String query ="UPDATE admin SET FIELDNAME='TEST'"
N1qlParams params = N1qlParams.build().adhoc(false);
N1qlQuery nquery = N1qlQuery.simple(query, params);
N1qlQueryResult nqr= this.rbucket.query(nquery);
我得到以下异常(最有意义的部分):
com.couchbase.client.core.CouchbaseException: N1qlQuery Error - {"msg":"syntax error - at UPDATE","code":3000}
实际的异常开始如下:
Exception in thread "main" com.couchbase.client.core.CouchbaseException: Error while preparing plan
当然 - 这个查询在Couchbase Web UI中运行良好,我可以毫无问题地更新。
仅供参考:我尝试转义单引号,甚至尝试将列设置为等于自身 - 同样的错误。
选择查询以类似的方式执行而没有任何问题。
“admin'不是一个好名字,因为它通常与一些保留的关键字有关,如果你仍然想使用这个名字,你必须使用它的反引号:
update `admin` set FIELDNAME = 'TEST'
如果您还没有主索引,它也可能会要求您创建主索引。