调用 "github.com/jackc/pgx".Connect 时参数过多

Too many arguments in call to "github.com/jackc/pgx".Connect

我正在尝试使用 pgx 打开与 postgres 数据库的连接,但出现以下错误:

./dbservice.go:12:26: too many arguments in call to "github.com/jackc/pgx".Connect
        have (context.Context, string)
        want ("github.com/jackc/pgx".ConnConfig)
./dbservice.go:13:18: too many arguments in call to conn.Close
        have (context.Context)
        want ()
./dbservice.go:21:44: cannot use context.Background() (type context.Context) as type string in argument to conn.Query

我不确定错误要求我在这里做什么。 pgx.Connect 当我从主文件调用它时有效,但在这里它不起作用。这是代码:

func initNodes(nodes *[]Node, searchNodes *[]SearchNode, storageNodes *[]StorageNode) error {
    conn, err := pgx.Connect(context.Background(), DATABATE_URL)
    defer conn.Close(context.Background())

    if err != nil {
        fmt.Printf("Connection failed: %v\n", err)
        os.Exit(-1)
    }
...

func main() {
    a:= Arbiter{}
    a.init()
}

有什么想法吗?

您很可能在 dbservice.go 中导入了 v3 pgx API,但在您的“主文件”中导入了 v4 API ”。 v3 中的 Connect function in github.com/jackc/pgx/v4 accepts the two arguments you're passing. The Connect 函数接受 pkg.ConnConfig

因此,请检查 dbservice.go 中的 import 语句:如果您打算使用 v4 API,请将其导入为 "github.com/jackc/pgx/v4"