我试图使用jackc/pgx包连接到我的postgres数据库,并按照提供的示例进行操作。问题是代码在连接调用处卡住了,我尝试在它之后打印一些内容,但未打印出来。
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)
输出:
postgresql://postgres:password@127.0.0.1:52269/database_name
我哪里出了问题?我可以使用 pgAdmin 4 连接到数据库,并且之前也曾使用 Go 中的标准 SQL 进行过连接。
connectionString := fmt.Sprintf("user=%s password=%s dbname=%s sslmode=disable", user, password, dbname)
a.DB, err = sql.Open("postgres", connectionString)
postgres://...
而不是postgresql://...
,对吗? - mkoprivapostgres://
并且看到了相同的问题,那就可以了。 - mkoprivadbURL
没有设置sslmode
,而所谓工作正常的connectionString
却有,也许这就是你的问题所在? - mkopriva