Windows下Apache Age Go Driver报错:age_prepare_cypher函数不存在
解决Windows下Apache Age Go驱动调用ExecCypher报
age_prepare_cypher不存在的问题 问题核心
Windows环境下使用Go驱动调用ExecCypher()时,驱动内部调用的age_prepare_cypher存储过程无法被找到,但Linux环境正常,直接在PG服务器执行Cypher或LOAD 'age'无问题。
解决方案
严格匹配AGE版本
确保你使用的Go驱动版本与Docker镜像中的Apache Age版本完全一致。比如Docker镜像用apache/age:1.4.0,Go驱动就要拉取对应v1.4.0的分支或tag。版本不匹配会导致存储过程的签名(参数类型、名称)不一致,直接触发找不到函数的错误。强制设置搜索路径
在建立数据库连接后,先执行以下SQL语句,确保ag_catalog(AGE扩展的schema)在搜索路径中:_, err := db.Exec("SET search_path = ag_catalog, \"$user\", public;") if err != nil { panic(err) }Windows环境下PG客户端的默认搜索路径可能未包含
ag_catalog,导致驱动找不到该schema下的age_prepare_cypher函数。绕过ExecCypher,直接执行Cypher查询
既然LOAD 'age'正常工作,可以直接用标准SQL执行Cypher查询,替代驱动封装的ExecCypher:rows, err := db.Query(`SELECT * FROM cypher('test_graph', $$MATCH (n) RETURN n$$) AS (n agtype);`) if err != nil { panic(err) } defer rows.Close() // 处理查询结果...用WSL2运行Go程序
由于Linux环境下无问题,可在Windows上启用WSL2,在WSL环境中编译并运行Go程序,规避Windows平台的兼容性问题。
内容的提问来源于stack exchange,提问作者Ahmar
相关产品推荐
相关产品推荐

