我尝试使用golang driver for apache age在Windows上运行密码查询。对于postgres服务器,我使用Apache-Age docker image。
在运行sample时,我得到以下错误:
ahmar> go run main.go age_wrapper_sample.go sql_api_sample.go
# Do cypher query with Age API
SELECT * FROM age_prepare_cypher($1, $2); testGraph CREATE (n:Person {name: '%s'})
panic: pq: function age_prepare_cypher(unknown, unknown) does not exist
goroutine 1 [running]:
main.doWithAgeWrapper({0x1004e94?, 0xc00000a018?}, {0xff0efb?, 0x1?})
C:/Users/ahmar/Desktop/GOlang drivers/samples/age_wrapper_sample.go:43 +0xcb4
main.main()
C:/Users/ahmar/Desktop/GOlang drivers/samples/main.go:41 +0x77
exit status 2
当我直接在postgres服务器上运行它们时,查询工作正常。还有其他的年龄命令,如LOAD 'age';
等,可以从驱动程序**工作,但ExecCypher()
函数不工作。
当调用age_prepare_cypher()
函数时,错误似乎源自execCypher()
中的age.go
文件。
注意:我在Linux上没有遇到这个错误。在那里,当使用age go驱动程序时,查询工作正常,我得到了预期的输出。
2条答案
按热度按时间xdnvmnnf1#
函数
age_prepare_cypher
是最近在this commit中添加的。它没有添加到图像apache/age:v1.1.0
中。因此,如果在提交42f94e7f36dc084b74ec335536a18173c6fca4cd时运行示例并连接到图像apache/age:v1.1.0
提供的数据库,您将获得错误panic: pq: function age_prepare_cypher(unknown, unknown) does not exist
。我使用以下命令运行容器:
然后在提交42f94e7f36dc084b74ec335536a18173c6fca4cd时运行示例,不做任何更改:
您看到sql_API_sample首先失败;而您的问题中,只有age_wrapper_sample失败,看来您修改了源代码,两个示例连接了不同的数据库,请仔细检查失败的示例连接的是哪个数据库,以及该函数是否在该数据库中定义,您可以检查是否存在带有
\df
的函数,以下是未找到函数时的输出:如果不是这样,请描述重现问题的确切步骤。谢谢!
pkwftd7m2#
你可能使用的是一个旧的docker镜像,它没有
age_prepare_cypher()
功能。我在windows上使用latest docker image测试了go驱动程序示例,它工作得很好。我还检查了
age_prepare_cypher()
函数是否存在于这个docker镜像中。