【问题标题】:Couchbase Java SDK N1QL UPDATE issueCouchbase Java SDK N1QL 更新问题
【发布时间】:2019-03-21 17:12:29
【问题描述】:

我正在使用 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 正常工作,我可以毫无问题地更新。

仅供参考:我尝试转义单引号,甚至尝试将列设置为等于自身 - 同样的错误。

选择查询以类似的方式执行,没有任何问题。

【问题讨论】:

    标签: java couchbase n1ql


    【解决方案1】:

    “admin”不是一个好名字,因为它通常与一些保留关键字有关,如果你仍然想使用这个名字,你必须在它周围使用反引号:

    update `admin` set FIELDNAME = 'TEST'
    

    如果您还没有主索引,它也可能会要求您创建主索引。

    【讨论】:

    • 嗨,我尝试了 allso 与反引号,这样,它仍然无法正常工作。我也尝试使用其他存储桶 - 名称不同 - 仍然无法通过 Java SDK 工作。
    • try "update admin set FIELDNAME = 'TEST' RETURNING meta().id" ,请把你其他测试的错误贴出来
    • 如果你会用spring,我强烈推荐这个教程blog.couchbase.com/couchbase-spring-boot-spring-data
    • 原来我不知何故得到了一些不可见的特殊字符...大声笑现在一切正常..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多