我想在针对防火墙的 DBMS 上未返回查询时返回。
首先,我设置代码
c, err := sql.Open("mysql",dbid+":"+dbps+"@tcp("+dbip[0]+":"+dbpt+")/"+dbnm+"?timeout=5s")
但是,不要那样做。
其次,我在上下文包中使用了该函数。
ctx, cancel := content.WithTimeout(context.Background(), time.Second * 10)
ret, err := db.QueryContext(ctx, "Select * from aaaa")
它在 10 秒后捕获超时,但评估了错误消息
"没有到主机的路线">
我尝试再查询一次。
如何编码评估读写查询发送时的超时?
我非常怀疑防火墙是否阻止了到数据库的路由。超时是显而易见的,因为主机本身是无法访问的。10 秒的评估基于您编写的计时器,并且由于防火墙阻止了您的 DBHost,因此您不会因评估错误而超时。