База данных golang /sql используя pq

У меня эта проблема

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

У меня не установлено postgres на моем локальном хосте, поэтому sql.Open должен возвращать некоторую ошибку, но на самом деле это не так, пока я не попытаюсь подготовить запрос и, наконец, я получаю сообщение об ошибке соединения отказано

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

это ожидаемое поведение? или я что-то упустил...

1 ответ

Решение

В соответствии с этим, да, это ожидаемое поведение. 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(), чтобы проверить, является ли соединение действительным или нет.

Другие вопросы по тегам