为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: 03134284294-20240919-243448-20119 Pack1
【操作系统】:golang开发环境Win11
【CPU】:14900k
【问题描述】*:
golang版本:1.23.8
go-dm版本如下:
问题描述:
参数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无论改什么值都没用
打断点debug发现在达梦驱动源码p.go代码中超时参数是被初始化的,也就是说我代码里传的参数connectTimeout是能被达梦的驱动接收的
以上需要帮助,需要实现go连接达梦数据库连不上的情况下超时参数要生效
你用socketTimeout试试效果