使用 postgres go 客户端更改用户密码

问题描述 投票:0回答:1

嗨,我正在尝试使用 Go 中的 pgx/v5 驱动程序更改 postgres 中的用户密码

_, err = conn.Exec(context.Background(), "ALTER USER $1 WITH PASSWORD $2", username, password)
if err != nil {
    fmt.Printf("Error altering user: %v\n", err)
    return
}

当我执行它时,出现以下错误:

error: syntax error at or near "$1" (SQLSTATE 42601)

我尝试使用 psql 运行原始 sql 查询,它工作正常,但尝试在 go 中执行此操作失败。我可能做错了什么以及如何解决它?

postgresql go pgx
1个回答
1
投票

参数引用可用于。然而 ALTER USER role_name ... 中的

role_name
是一个 name,或者更准确地说,是一个 identifier,它不是一个值。就像不可能做到
CREATE TABLE $1 ...
一样,出于同样的原因,也不可能做到
ALTER USER $1

根据

username
的来源,您可以简单地使用
fmt.Sprintf
并将名称按原样插入到字符串中,或者您可以在postgres中声明一个函数来执行动态sql

© www.soinside.com 2019 - 2024. All rights reserved.