postgresql 函数cypher(unknown,unknown)在Apache AGE中不存在

e0bqpujr  于 2023-04-11  发布在  PostgreSQL
关注(0)|答案(1)|浏览(174)

我试图使用PostgreSQL中的cypher函数在我的Apache AGE图形数据库上执行Cypher查询,但遇到了错误。
下面是我尝试运行的查询:

SELECT * FROM cypher('g1', $$ MATCH (n) return n $$);

下面是我收到的错误消息:

ERROR:  function cypher(unknown, unknown) does not exist
LINE 1: SELECT * FROM cypher('g1', $$ MATCH (n) return n $$);
                      ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

我已经检查了是否安装了ApacheAGE扩展并将其添加到数据库中,并且在查询中使用了正确的图形名称(g1)。
我通过运行这个查询,仔细检查并确认AGE扩展已经安装。
SELECT * FROM pg_extension WHERE extname = 'age';
如何解决此错误并在Apache AGE中成功执行Cypher查询?

yhxst69z

yhxst69z1#

首先,您的查询中有一个错误,正确的查询是

SELECT * FROM cypher('<enter_graph_name_here>', $$ MATCH (n) return n $$)
AS (result agtype);

只有将search_path设置为

SET search_path to ag_catalog;

如果您没有像上面那样设置search_path,并且它是public的,则将第一个查询修改为

SELECT * FROM ag_catalog.cypher('<enter_graph_name_here>', $$ MATCH (n) return n $$)
AS (result agtype);

这是因为cypher函数存在于ag_catalog命名空间中,您需要使用search_path将命名空间设置为ag_catalog,或者在所有查询中使用ag_catalog.作为所有函数名称的前缀。

相关问题