message: apoc.meta.data is unavailable

报错内容

Traceback (most recent call last):
  File "/langchain-master/templates/neo4j-semantic-ollama/ingest.py", line 9, in <module>
    graph = Neo4jGraph()
  File "/root/anaconda3/envs/sakura/lib/python3.9/site-packages/langchain_community/graphs/neo4j_graph.py", line 213, in __init__
    raise e
  File "/root/anaconda3/envs/sakura/lib/python3.9/site-packages/langchain_community/graphs/neo4j_graph.py", line 205, in __init__
    self.refresh_schema()
  File "/root/anaconda3/envs/sakura/lib/python3.9/site-packages/langchain_community/graphs/neo4j_graph.py", line 248, in refresh_schema
    for el in self.query(
  File "/root/anaconda3/envs/sakura/lib/python3.9/site-packages/langchain_community/graphs/neo4j_graph.py", line 233, in query
    json_data = [r.data() for r in data]
  File "/root/anaconda3/envs/sakura/lib/python3.9/site-packages/langchain_community/graphs/neo4j_graph.py", line 233, in <listcomp>
    json_data = [r.data() for r in data]
  File "/root/anaconda3/envs/sakura/lib/python3.9/site-packages/neo4j/_sync/work/result.py", line 270, in __iter__
    self._connection.fetch_message()
  File "/root/anaconda3/envs/sakura/lib/python3.9/site-packages/neo4j/_sync/io/_common.py", line 178, in inner
    func(*args, **kwargs)
  File "/root/anaconda3/envs/sakura/lib/python3.9/site-packages/neo4j/_sync/io/_bolt.py", line 849, in fetch_message
    res = self._process_message(tag, fields)
  File "/root/anaconda3/envs/sakura/lib/python3.9/site-packages/neo4j/_sync/io/_bolt4.py", line 368, in _process_message
    response.on_failure(summary_metadata or {})
  File "/root/anaconda3/envs/sakura/lib/python3.9/site-packages/neo4j/_sync/io/_common.py", line 245, in on_failure
    raise Neo4jError.hydrate(**metadata)
neo4j.exceptions.ClientError: {code: Neo.ClientError.Procedure.ProcedureRegistrationFailed} {message: apoc.meta.data is unavailable because it is sandboxed and has dependencies outside of the sandbox. Sandboxing is controlled by the dbms.security.procedures.unrestricted setting. Only unrestrict procedures you can trust with access to database internals.}

报错原因

APOC权限不足

解决方案

vim $NEO4J_HOME/conf/neo4j.conf
# 参考
# vim /root/neo4j-community-4.4.30/conf/neo4j.conf

找到security.procedures.unrestricted
在其下方添加以下代码

dbms.security.procedures.unrestricted=apoc.*

在这里插入图片描述

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: APOC (Awesome Procedures On Cypher) 是一个为 Neo4j 图数据库提供额外功能的第三方库。在使用 APOC 之前,需要在 Neo4j 中安装 APOCapoc.number.exact() 函数用于将浮点数转换为精确数。使用方法是在 Cypher 查询中调用该函数,并将需要转换的数字作为参数传入。 例如,若要将浮点数 3.14 转换为精确数,可以使用以下查询: ``` WITH apoc.number.exact(3.14) AS pi RETURN pi ``` 运行此查询将返回: ``` 3.14 ``` 另外, 该函数有一个可选参数 precision, 用来控制返回的精度。默认是 double 类型的精度,如果传入 decimal 将返回 decimal 类型。 例如 ``` WITH apoc.number.exact(3.14, 'decimal') AS pi RETURN pi ``` 会返回 3.14 需要注意的是, 该函数的输出不会对原始的浮点数产生任何影响, 只是返回一个精确的数值. ### 回答2: 为了使用apoc.number.exact函数,您需要首先安装APOC库。APOC是一个用于扩展Neo4j数据库的库,它提供了许多用于数据转换和处理的函数。 一旦安装了APOC库,您可以在Cypher查询中使用apoc.number.exact函数。这个函数用于将数字转换为准确的数值类型。 使用apoc.number.exact函数的语法如下: apoc.number.exact(value) 其中,value是要转换的数字。 这个函数可以将各种格式的数字转换为准确的数值类型。它可以处理整数、浮点数和科学计数法表示的数字。 例如,如果您有一个字符串"10",您可以使用apoc.number.exact函数将其转换为整数10: RETURN apoc.number.exact("10") AS result 这将返回一个包含数字10的结果。 同样,如果您有一个字符串"3.14",您可以使用apoc.number.exact函数将其转换为浮点数3.14: RETURN apoc.number.exact("3.14") AS result 这将返回一个包含数字3.14的结果。 总而言之,使用apoc.number.exact函数可以帮助您将各种格式的数字转换为准确的数值类型,从而方便您进行数值计算和比较。 ### 回答3: apoc.number.exact 是 Neo4jAPOC(Awesome Procedures on Cypher)工具集中用于处理数字的函数之一。它可以用来进行精确计算和比较数字。 使用 apoc.number.exact,您需要在执行 Cypher 查询或编写存储过程时,调用该函数,并提供要进行计算或比较的数字作为参数。下面是一个使用 apoc.number.exact 进行精确计算的示例: 假设我们想要计算两个浮点数 x 和 y 的和,并保留两位小数。我们可以使用以下 Cypher 查询: ```cypher WITH apoc.number.exact(x + y, 2) AS sum RETURN sum ``` 在上面的查询中,我们使用 apoc.number.exact 对表达式 x + y 进行计算,并提供保留小数位数为 2。然后,我们将计算结果存储在变量 sum 中,并返回它。 除了精确计算,apoc.number.exact 还可用于比较数字。以下是一个比较两个整数 x 和 y 是否相等的示例: ```cypher WITH apoc.number.exact(x) = apoc.number.exact(y) AS equal RETURN equal ``` 在上面的查询中,我们使用 apoc.number.exact 将 x 和 y 转换为精确的数字,然后通过比较它们是否相等,将结果存储在变量 equal 中,并返回它。 总之,apoc.number.exact 是 Neo4jAPOC 工具集中用于处理数字的函数之一。它可用于进行精确计算和比较数字,并且可以在 Cypher 查询或存储过程中灵活使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值