获取session时报错

  • nebula 版本: “2.6.1”
  • 部署方式:单机
  • 安装方式:RPM
  • 是否为线上版本: N
  • 硬件信息
    • 磁盘( 推荐使用 SSD)
    • CPU、内存信息
  • 问题的具体描述
  • 我是用的是golang客户端 封装了一个获取session的方法 代码如下
func GetNebulaSession() *nebula.Session {
	username := viper.GetString("nebula.username")
	password := viper.GetString("nebula.password")
	session, err := pool.GetSession(username, password)
	if err != nil {
		log.Logger.Errorf("Fail to create a new session from connection pool, username: %s, password: %s, %s",
			username, password, err)
		return nil
	}
	//defer session.Release()
	return session
}
  • 也会在调用的地方执行
defer db.Release()
  • 当我接口调用时 有如下报错
authentication fails, Invalid data length

go 的版本号多少

1.16

我错了 Orz,nebula-go 的版本号

用的是go get的方式 应该是最新的 nebula “github.com/vesoft-inc/nebula-go

客户端版本不一致,2.6 应该用 2.6 的客户端,不要用 master 的

而且似乎是第二次调用的时候才会报错 。。。

是这样

  • 我在项目初始化的时候会执行一次建表的操作 正常
  • 然后我在接口中 会执行3次查询操作 执行第一次的时候结果返回正常 第二次就获取不到session了 因为间隔时间太短?

就是版本不一致的问题 换成2.6吧

好了 我在本地checkout了 :frowning_face:

另外问一下 我想一次执行两次查询 第二次查询用的条件是第一次的结果
类似

create edge  if not  exists follows(pid string);
insert edge follows(pid) values "0" -> "1":("0");
insert edge follows(pid) values "1" -> "2":("1");
insert edge follows(pid) values "1" -> "4":("4");
insert edge follows(pid) values "2" -> "3":("2");

查询

go  1 to 3 steps from  "0" over follows;     结果:1,2,3,4
fetch prop on filter "1","2","3","4";

怎么能把上面两次查询组合成一次

可以通过管道实现:

(root@nebula) [nba]> go from "Tim Duncan" over like YIELD id($$) as vid | fetch prop on player $-.vid yield properties(vertex)
+----------------------------------+
| properties(VERTEX)               |
+----------------------------------+
| {age: 41, name: "Manu Ginobili"} |
| {age: 36, name: "Tony Parker"}   |
+----------------------------------+
Got 2 rows (time spent 5442/5837 us)