Reputation: 748
I'm trying go connect to my postgres database using the jackc/pgx package and I'm following the provided example. The problem is that the code gets stuck at the connect call. I've tried printing something right after it and it doesn't print.
var dbURL string = fmt.Sprintf("postgresql://%s:%s@%s:%s/%s", user, password, host, port, dbname)
fmt.Println(dbURL)
conn, err := pgx.Connect(context.Background(), dbURL)
if err != nil {
fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err)
os.Exit(1)
}
defer conn.Close(context.Background())
var text string
err = conn.QueryRow(context.Background(), "select text from questions where id=$1", 1).Scan(&text)
if err != nil {
fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", err)
os.Exit(1)
}
fmt.Println(text)
Output:
postgresql://postgres:[email protected]:52269/database_name
What am I doing wrong? I can connect to the db with pgAdmin 4 and I've connected to it before using the standard sql from go.
connectionString := fmt.Sprintf("user=%s password=%s dbname=%s sslmode=disable", user, password, dbname)
a.DB, err = sql.Open("postgres", connectionString)
Upvotes: 9
Views: 22301
Reputation: 1
in your pgAdmin example you leave out the host, in which case it defaults to local unix socket, not localhost
or 127.0.0.1
Upvotes: 0
Reputation: 588
Documentation for pgx says both connection string and URL are allowed
https://pkg.go.dev/github.com/jackc/pgx/v4/[email protected]#ParseConfig
user=jack password=secret host=pg.example.com port=5432 dbname=mydb sslmode=verify-ca pool_max_conns=10
postgres://jack:[email protected]:5432/mydb?sslmode=verify-ca&pool_max_conns=10
Upvotes: 7