Lucas
Lucas

Reputation: 748

Using pgx to connect to postgres db in Go

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

Answers (2)

Hannu Krosing
Hannu Krosing

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

Farooq Khan
Farooq Khan

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

Example DSN

user=jack password=secret host=pg.example.com port=5432 dbname=mydb sslmode=verify-ca pool_max_conns=10

Example URL

postgres://jack:[email protected]:5432/mydb?sslmode=verify-ca&pool_max_conns=10

Upvotes: 7

Related Questions