我写了一个go程序来监控一些MySQL数据库。
在下面的示例中,我只是显示“连接成功!” 连接成功时显示“连接错误:”,失败时显示错误消息。
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
err := mysqlConnect()
if err != nil {
fmt.Println("Connection Error:", err)
} else {
fmt.Println("Connection Success!")
}
}
func mysqlConnect() error {
db, err := sql.Open("mysql", "myuser:mypwd@tcp(10.2.0.3:3306)/mysql")
if err != nil {
return err
}
defer db.Close()
err = db.Ping()
if err != nil {
return err
}
return nil
}
这按预期工作,但在某些情况下,执行 db.Ping() 时会出现一些错误消息并显示到 stdErr:
例如:
$ go run main.go
[mysql] 2019/07/22 18:01:59 auth.go:293: unknown auth plugin:dialog
Connection Error: this authentication plugin is not supported
最后一行是我预期的消息,但是调用 db.Ping() 时会显示上一行。
我想捕获/隐藏此消息[mysql] 2019/07/22 18:01:59 auth.go:293: unknown auth plugin:dialog,因为我已经收到一条干净的错误消息,我可以按照我的意愿处理它(显示或不显示)。
如何防止出现此类错误消息(我的意思是在代码中,而不是在调用时)?
慕工程0101907
相关分类