我有这个问题
db, err := sql.Open("postgres", "user=xxx dbname=xxx connect_timeout=5 sslmode=disable")
if err != nil {
log.Fatal(err)
}
我没有安装postgres在我的本地主机所以sql。打开应该返回一些错误,但实际上不是,直到我尝试准备一个查询,最后我得到一个连接拒绝错误
stmt, err := c.DB.Prepare("SELECT id FROM services WHERE name = $1")
if err != nil {
log.Fatal(err)
}
这是预期的行为吗?或者我错过了什么……
据此,Yes这是一种预期行为。Open()不直接打开到数据库的连接。相反,第一个连接是在第一次实际使用数据库时打开的。
Open may just validate its arguments without creating a connection
to the database.
To verify that the data source name is valid, call Ping.
使用Ping()检查连接是否有效