1

我正在尝试使用 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()
}

有任何想法吗?

4

1 回答 1

3

很可能您将v3 pgxAPI 导入到 中dbservice.go,但v4API 在您的“主文件”中。中的Connect函数github.com/jackc/pgx/v4接受您传递的两个参数。中的Connect函数v3接受 apkg.ConnConfig代替。

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

于 2021-08-04T21:46:07.480 回答