gpt4 book ai didi

Java客户端密码查询与RedisGraph redis.clients.jedis.exceptions.JedisDataException : errMsg: Invalid input 'p' : expected PROFILE line: 1

转载 作者:行者123 更新时间:2023-12-03 06:41:11 25 4
gpt4 key购买 nike

在 Java 项目中使用 Redis Labs 的 RedishGraph。当我将 map 属性作为输入传递给 Cypher 查询时出现以下错误。

 ObjectMapper oMapper = new ObjectMapper();
Person person=new Person(2, "Jagadeesh", 23);
Map<String, Object> personMap = oMapper.convertValue(person, Map.class);

Map<String, Object> props=new HashMap<>();
props.put("props", personMap);

ResultSet rs1 = graph.query("UserGraph", "CREATE ($props)", props);

出现意外错误(类型=内部服务器错误,状态=500)。
redis.clients.jedis.exceptions.JedisDataException:errMsg:无效输入“p”:预期的 PROFILE 行:1,列:4,偏移量:3 errCtx:props={id=2,name=Jagadeesh,age=23} CREATE( $props) errCtxOffset: 3

最佳答案

免责声明:我是 RedisGraph 的工程师之一。

首先,我们暂时不支持将 map 作为 RedisGraph 中的 native 数据类型,因此很遗憾,目前不支持您的查询。

第二,你能分享一下你使用的是哪个版本的 RedisGraph 吗?我在我们最新的 docker 镜像 (docker run -p 6379:6379 --rm redislabs/redisgraph:latest) 上执行了以下代码

    @Test
public void testStackOverflowQuestion(){
RedisGraph graph = new RedisGraph();
Map<String, Object> props = new HashMap<>();
props.put("id", 2);
props.put("name", "Jagadeesh");
props.put("age", 23);
graph.query("UserGraph", "CREATE ($props)", props);
}

并且响应似乎更适合未支持的数据类型:
com.redislabs.redisgraph.exceptions.JRedisGraphCompileTimeException: redis.clients.jedis.exceptions.JedisDataException: Encountered unhandled type in inlined properties.

评论后编辑:

我将测试修改为

    @Test
public void testStackOverflowQuestion(){
RedisGraph graph = new RedisGraph();
Map<String, Object> personMap = new HashMap<>();
personMap.put("id", 2);
personMap.put("name", "Jagadeesh");
personMap.put("age", 23);
Map<String, Object> props = new HashMap<>();
props.put("props", personMap);
graph.query("UserGraph", "CREATE ($props)", props);
}

我得到了和你一样的回应。
这是我们的解析器错误。我们的解析器期望映射键值对用冒号分隔 key:value当前调用map的JRedisGraph中map对象的序列化格式错误导致的错误 toString()将其序列化为 key = value 的方法所以我们的解析器跳过参数解析并将 map 视为实际查询的一部分。

通过申请 MONITOR在 redis-cli 中,您的查询会产生以下命令: "graph.QUERY" "UserGraph" "CYPHER props={name=Jagadeesh, id=2, age=23} CREATE ($props)" "--COMPACT"如您所见, map 发送到 key=value格式。
我手动更改了查询并使用 key:value 在 redis-cli 中发送它格式并得到预期的响应:
127.0.0.1:6379> graph.query g "CYPHER props={name:Jagadeesh, id:2, age:23} CREATE ($props)"
(error) Encountered unhandled type in inlined properties.

关于Java客户端密码查询与RedisGraph redis.clients.jedis.exceptions.JedisDataException : errMsg: Invalid input 'p' : expected PROFILE line: 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62186539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com