我试图在一个运行ubuntu的设备上连接postgres数据库。
它在"/var/run/postgresql“端口”5432“中通过套接字以用户"postgres”的身份连接到数据库“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)运行时错误:无效的内存地址或零指针取消引用goroutine 7运行: net/http.(*conn).serve.func1(0xc000092dc0) /usr/local/go/src/net/http/server.go:1824 +0x153恐慌(0x7ea0e0,0xad7860) /usr/local/go/src/运行时/panic.go:971 +0x499
0x8cd250,0xc00240e0,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,0xc000103a8,0x3,0x3,0x0,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,0xc00e22a0,0xc000134100) /usr/local/go/src/net/http/server.go:2069 +0x44 net/http.(*ServeMux).ServeHTTP(0xae6be0,0x8cbcc0,0xc0000e22a0,0xc134100)/usr/local/go/src/net/http/server.go:2069+0x44 net/http.(*ServeMux).ServeHTTP(0xae6be0,0x8cbcc0,0xc00e22a0,0xc134100)/usr/local/go/src/net/http/server.go:2469+0x44 net/http.(*ServeMux).ServeHTTP(0xae6be0,0x8cbcc0,0xc00e22a0,0xc134100)/usr/local/go/src/net/http/server.go:2069+0x44 net/http.(*ServeMux).ServeHTTP(0xae6be0,0x8cbcc0,0xc0000e22a0,0xc134100)/usr/local/go/src/net/http/server.go:2400001x1x0xc000134100) /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 (*服务器).Serve/usr/local/go/src/net/server.go:3013 +0x39b
发布于 2021-07-06 16:17:11
主机需要位于URI的主机位置,而不仅仅是在末尾加进去。但是由于它包含文字/,所以需要对这些URI进行编码。
postgres://%2Fvar%2Frun%2Fpostgresql/template1https://stackoverflow.com/questions/68273329
复制相似问题