注册

【BUG】-使用go驱动的参数connectTimeout无法生效

codeonkbd 2025/05/06 116 1 已解决

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: 03134284294-20240919-243448-20119 Pack1
【操作系统】:golang开发环境Win11
【CPU】:14900k
【问题描述】*:
golang版本:1.23.8
go-dm版本如下:
iShot20250506_11.18.01.png

问题描述:
参数connectTimeout=3000参数无法生效,如下代码所示,故意写错ip地址,但是连接超时时间永远是1秒,而不是设定的3000ms

代码如下:

func main() { fmt.Println("runtime.GOOS:", runtime.GOOS) dsn := "dm://SYSDBA:xxxxxxxxx@192.168.212.2131:5236?appName=MacPro&connectTimeout=3000&clientEncoding=GB18030" db, err := sql.Open("dm", dsn) if err != nil { fmt.Println(err) return } startTime := time.Now() err = db.Ping() if err != nil { endTime := time.Now() timeDiff := endTime.Sub(startTime) fmt.Println("timeDiff:", timeDiff) fmt.Println(err) return } }

如下图运行代码之后,由于故意输错ip地址,想实现等待3秒连接超时报错,但是发现这个参数connectTimeout无论改什么值都没用

iShot20250506_11.17.23.png

打断点debug发现在达梦驱动源码p.go代码中超时参数是被初始化的,也就是说我代码里传的参数connectTimeout是能被达梦的驱动接收的
iShot20250506_11.15.38.png

以上需要帮助,需要实现go连接达梦数据库连不上的情况下超时参数要生效

回答 0
暂无回答
扫一扫
联系客服