【发布时间】: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