服务器上未启用 SSL

试图与 postgres 数据库通信,准备这样的语句:

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

有办法吗?

如果需要,我可以添加更多信息。

94635 次浏览

您应该在没有 SSL 加密的情况下建立 DB 连接,如下所示:

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

如果您的数据源名称是一个 url,您可以这样做:

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

sslmode像查询参数一样被添加到 db URL。

若要建立不使用 SSL 的连接,请尝试

postgres://username:password@host:5432/database?sslmode=disable

请注意:

这甚至会发生,如果你指出一个 sslmode=disable,但有空的其他参数。例如 dbname=

例如,连接字符串:

user=test password=test dbname=sslmode=disable将为 也发出这个错误,因为 dbname 为空。

我就是这样让它工作的:

db, err := sql.Open("postgres", "postgres://{user}:{password}@{hostname}:{port}/{database-name}?sslmode=disable")