服务器上未启用SSL

Gus*_*obo 92 go

尝试使用go与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
}
Run Code Online (Sandbox Code Playgroud)

引发以下错误:

db.Prepare error: pq: SSL is not enabled on the server
Run Code Online (Sandbox Code Playgroud)

有解决方案吗

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

Kav*_*avu 152

您应该建立没有SSL加密的数据库连接,如下所示:

db, err := sql.Open("postgres", "user=test password=test dbname=test sslmode=disable") 
Run Code Online (Sandbox Code Playgroud)

  • `sslmode = disable`,太棒了,谢谢! (11认同)

eat*_*hil 107

如果您的数据源名称是网址,您将这样做:

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

sslmode 只是像查询参数一样添加到db url中.


Har*_*ren 12

要建立没有SSL的连接,请尝试

postgres://username:password@host:5432/database?sslmode=disable
Run Code Online (Sandbox Code Playgroud)


gil*_*niy 9

这就是我让它工作的方式:

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


fro*_*ops 5

请注意:

如果您已指定了sslmode=disable,但其他参数为空,甚至会发生这种情况。例如dbname=

例如,连接字符串:

user=test password=test dbname=sslmode=disable发出此错误,因为dbname为空。

  • 这使我免于本地开发设置,因为此处密码为空。 (2认同)