goq数据库/ sql使用pq

时间:2016-11-15 10:22:23

标签: go pq

我遇到了这个问题

 db, err := sql.Open("postgres", "user=xxx dbname=xxx connect_timeout=5 sslmode=disable")
 if err != nil {
    log.Fatal(err)
 }

我的localhost上没有安装postgres所以sql.Open应该返回一些错误但实际上直到我尝试准备一个查询并最终得到一个连接拒绝错误

stmt, err := c.DB.Prepare("SELECT id FROM services WHERE name = $1")
if err != nil {
    log.Fatal(err)
}

这是预期的行为吗?或者我错过了什么......

1 个答案:

答案 0 :(得分:2)

根据this,这是预期的行为。 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()检查连接是否有效。