使用Ping查找Golang中的DB连接是否处于活动状态
只需ping数据库以检查我的golang应用程序是否仍处于连接状态是否安全,或者是否有比此更好的解决方案?我在某个地方读到,我们不应该使用.ping()来确定连接丢失使用Ping查找Golang中的DB连接是否处于活动状态,go,Go,只需ping数据库以检查我的golang应用程序是否仍处于连接状态是否安全,或者是否有比此更好的解决方案?我在某个地方读到,我们不应该使用.ping()来确定连接丢失 谢谢。最好执行一个简单的查询并检查结果。Ping()方法使用起来是安全的,但可由数据库驱动程序实现 请参见如果您需要单独测试运行查询的连接(可能仅在程序启动时),我会说Ping()是一种方法 通常我只相信这样一个事实,即数据库/sql将自动尝试重新连接,以防对DB执行查询而连接失败。所以您可以使用Open检查DB connecti
谢谢。最好执行一个简单的查询并检查结果。Ping()方法使用起来是安全的,但可由数据库驱动程序实现 请参见如果您需要单独测试运行查询的连接(可能仅在程序启动时),我会说Ping()是一种方法 通常我只相信这样一个事实,即数据库/sql将自动尝试重新连接,以防对DB执行查询而连接失败。所以您可以使用Open检查DB connection args是否正确,并使用trust query在连接丢失时返回错误 人们说Ping()会导致竞争条件,但无法向我演示如何进行连接测试,也无法在需要连接测试的地方提供合适的替代方案 Gorm(广泛使用的Golang ORM项目)就是这样做的:
// Send a ping to make sure the database connection is alive.
if d, ok := dbSQL.(*sql.DB); ok {
if err = d.Ping(); err != nil {
d.Close()
}
}
return
Ping也会在每次我的情况下创建一个新连接:(Ping和其他到达数据库的调用一样,可能会在不存在可用连接的情况下创建一个新连接。这取决于程序的实现和驱动程序。Go会维护一个连接池,并在可能的情况下重用连接。请参阅。