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