【问题标题】:Java - Failed to execute AQL queryJava - 无法执行 AQL 查询
【发布时间】:2019-02-25 11:12:52
【问题描述】:

如何修复 AQL 语法错误? 我正在尝试使用查询创建边缘,但出现以下错误:

无法执行查询。响应:400,错误:1501 - AQL:语法错误,查询字符串在位置 1:57 附近的“@edges”附近意外结束(解析时)

用于执行查询的代码:

try {

 String query = "INSERT { _from:TurmaA._teste2, _to:TurmaA._testepedro } IN @edges";
 Map<String, Object> bindVars = new MapBuilder().put("edges", nome2).get();
 ArangoCursor<BaseDocument> cursor = arangoDB.db(dbName).query(query, bindVars, 
null, BaseDocument.class);

cursor.forEachRemaining(aDocument -> {
  System.out.println("Key: " + aDocument.getKey());
 });
} catch (ArangoDBException e) {
 System.err.println("Failed to execute query. " + e.getMessage());
}

【问题讨论】:

    标签: java arangodb


    【解决方案1】:

    请注意collection bind variables have to be prefixed by two @@

    所以您的代码示例可能可以像这样轻松修复:

    
    try {
    
     String query = "INSERT { _from:TurmaA._teste2, _to:TurmaA._testepedro } IN @@edges";
     Map<String, Object> bindVars = new MapBuilder().put("@edges", nome2).get();
     ArangoCursor<BaseDocument> cursor = arangoDB.db(dbName).query(query, bindVars, 
    null, BaseDocument.class);
    
    cursor.forEachRemaining(aDocument -> {
      System.out.println("Key: " + aDocument.getKey());
     });
    } catch (ArangoDBException e) {
     System.err.println("Failed to execute query. " + e.getMessage());
    }
    

    【讨论】:

    • 谢谢!这确实有效,但现在我遇到了另一个问题......它说collection or view not found: testepedro 但我检查了一下,它在正确的集合中
    • 请在网页界面试一试,它提供了更简单的调试方式。请注意,它区分大小写。
    猜你喜欢
    • 1970-01-01
    • 2015-07-10
    • 2016-04-17
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多