SSL не включен на сервере


106

Пытаемся связаться с базой данных postgres с помощью go, подготовив такой оператор:

var stmt *sql.Stmt
var err error

stmt, err = db.Prepare(selectStatement)
if err != nil {
    fmt.Printf("db.Prepare error: %v\n",err)
    return err
}

Выдает следующую ошибку:

db.Prepare error: pq: SSL is not enabled on the server

Любое решение?

Если нужно, могу добавить дополнительную информацию.


1
//, я получил эту ошибку в HashiCorp Vault.
Натан Басанезе

2
@NathanBasanese, я знаю, что это было давно, но я решил эту проблему, добавив ?sslmode=disableстроку подключения.
LucasBr

Ответы:


186

Вы должны установить соединение с БД без SSL-шифрования, например:

db, err := sql.Open("postgres", "user=test password=test dbname=test sslmode=disable") 

спасибо за этот комментарий спасения жизни. btw: кто-нибудь знает, как настроить psql для поддержки SSL для контейнера докеров?
храм

123

Если имя вашего источника данных является URL-адресом, вы сделаете это следующим образом:

db, err := sql.Open("postgres", "postgres://username:password@localhost/db_name?sslmode=disable")

sslmode просто добавляется к URL-адресу db как параметр запроса.



13

Обратите внимание, пожалуйста:

Это происходит даже в том случае, если вы указали a sslmode=disable, но оставили пустой другой параметр. Напримерdbname=

Например, строка подключения:

user=test password=test dbname=sslmode=disableтакже вызовет эту ошибку , потому что имя базы данных пусто.


4
Это избавило меня от настройки локального разработчика, потому что пароль здесь был пуст.
Перелин

0

Вот как у меня это работает:

db, err := sql.Open("postgres", "postgres://{user}:{password}@{hostname}:{port}/{database-name}?sslmode=disable")
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.