【问题标题】:Trying to connect postgres database - connection url尝试连接 postgres 数据库 - 连接 url
【发布时间】:2021-07-06 15:27:08
【问题描述】:

我正在尝试在运行 ubuntu 的设备上连接到 postgres 数据库。

上面写着“您以用户“postgres”的身份通过端口“5432”的“/var/run/postgresql”中的套接字连接到数据库“template1”。 "

我猜这没问题,但它没有连接。怎么了?这是连接代码:

var dbpool, _ = pgxpool.Connect(context.Background(), os.Getenv("postgres:///template1?host=/var/run/postgresql"))  

go 代码错误

var dbpool, _ = pgxpool.Connect(context.Background(), os.Getenv("postgres://%2Fvar%2Frun%2Fpostgresql/template1"))  
func HelloServer(w http.ResponseWriter, req *http.Request) {

    decoder := json.NewDecoder(req.Body)
    var t test_struct
    err := decoder.Decode(&t)
    if err != nil {
        panic(err)
    }
    log.Println(t)
_, err = dbpool.Exec(ctx,"INSERT INTO users (id,name,surname) VALUES ($1,$2,$3)", t.Id, t.Name,t.Surname)

运行时错误:无效的内存地址或 nil 指针取消引用 goroutine 7 [运行]:net/http.(*conn).serve.func1(0xc000092dc0) /usr/local/go/src/net/http/server.go:1824 +0x153 恐慌(0x7ea0e0, 0xad7860) /usr/local/go/src/runtime/panic.go:971 +0x499 github.com/jackc/pgx/v4/pgxpool.(*Pool).Acquire(0x0, 0x8cd250, 0xc0000240e0, 0x10, 0x7ffa25841108, 0x10) /root/go/pkg/mod/github.com/jackc/pgx/v4@v4.11.0/pgxpool/pool.go:380 +0x31 github.com/jackc/pgx/v4/pgxpool.(*Pool).Exec(0x0, 0x8cd250, 0xc0000240e0, 0x85f063, 0x36, 0xc000103aa8, 0x3, 0x3, 0x0, 0x0, ...) /root/go/pkg/mod/github.com/jackc/pgx/v4@v4.11.0/pgxpool/pool.go:432 +0x86 main.HelloServer(0x8cbcc0, 0xc0000e22a0, 0xc000134100) /root/goservertls.go:41 +0x2b1 net/http.HandlerFunc.ServeHTTP(0x86d7e0, 0x8cbcc0, 0xc0000e22a0, 0xc000134100) /usr/local/go/src/net/http/server.go:2069 +0x44 net/http.(*ServeMux).ServeHTTP(0xae6be0, 0x8cbcc0, 0xc0000e22a0, 0xc000134100) /usr/local/go/src/net/http/server.go:2448 +0x1ad net/http.serverHandler.ServeHTTP(0xc0000e20e0, 0x8cbcc0, 0xc0000e22a0, 0xc000134100) /usr/local/go/src/net/http/server.go:2887 +0xa3 net/http.(*conn).serve(0xc000092dc0, 0x8cd2c0, 0xc0000634c0) /usr/local/go/src/net/http/server.go:1952 +0x8cd 创建者 net/http.(*Server).Serve /usr/local/go/src/net/http/server.go:3013 +0x39b

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    host 需要进入 URI 的 host 位置,而不是仅仅在末尾添加。但由于它包含文字 /,因此需要对它们进行 URI 编码。

     postgres://%2Fvar%2Frun%2Fpostgresql/template1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-11
      • 2023-01-11
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      • 2021-03-19
      • 2021-08-15
      • 1970-01-01
      相关资源
      最近更新 更多