只是ping数据库以检查我的golang应用程序是否仍然连接或是否有比这更好的解决方案是否安全?我在某处读过,我们不应该使用.ping()来确定连接丢失。
感谢。
答案 0 :(得分:5)
执行简单查询并检查结果可能更好。 Ping()方法可以安全使用,但可以由数据库驱动程序实现。
请参阅Ping()
答案 1 :(得分:3)
我想说Ping()是这样做的方法,如果你需要在程序启动时单独测试运行查询的连接。
通常情况下,我只相信数据库/ sql会自动尝试重新连接,以防您对DB执行查询并且连接失败。因此,您可以使用Open来检查数据库连接args是否正确,并且信任查询以在连接丢失时返回错误。
人们说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