SSL is not enabled on the server
GoGo Problem Overview
Trying to communicate with a postgres database with go, preparing the statement like this:
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
}
Throws the following error:
db.Prepare error: pq: SSL is not enabled on the server
Any solution ?
I can add more information, if needed.
Go Solutions
Solution 1 - Go
You should establish DB connection without SSL encryption, like that:
db, err := sql.Open("postgres", "user=test password=test dbname=test sslmode=disable")
Solution 2 - Go
If your data source name is a url, you will do it like this:
db, err := sql.Open("postgres", "postgres://username:password@localhost/db_name?sslmode=disable")
sslmode
is just added to the db url like a query parameter.
Solution 3 - Go
Notice, please:
This even occurs, if you have indicated a sslmode=disable
, but have empty other param. For example dbname=
For example, connection string:
user=test password=test dbname=sslmode=disable
will also issue this error, because dbname is empty.
Solution 4 - Go
To establish a connection without SSL, try
postgres://username:password@host:5432/database?sslmode=disable
Solution 5 - Go
This is how I got it working:
db, err := sql.Open("postgres", "postgres://{user}:{password}@{hostname}:{port}/{database-name}?sslmode=disable")