使用 gorm 和 GORM LOG sql:预期 0 个参数,得到 1 个

use gorm and GORM LOG sql: expected 0 arguments, got 1

GORM 日志sql:预期 0 个参数,得到 1 个

我的密码是

func GetPipelineConfigKey(riskConfigKey string) string{
    var PipelineConfigKey string
    sql := fmt.Sprintf("SELECT context_name FROM hawk_context_name WHERE id = (SELECT service_line_id FROM risk_predict_config_key WHERE config_key = '%s');", riskConfigKey)
    contextDb.Exec(sql, &PipelineConfigKey)
    return PipelineConfigKey
}

Exec 具有以下签名

func (s *DB) Exec(sql string, values ...interface{}) *DB {

values 在这里是一个可变参数,对于您传递给 Exec 的每个变量,在您的 sql 查询中应该有一个 ?。您传递了 1 个参数,但查询不期望任何参数(无 ?)。这就是为什么您会收到以下错误。

sql: expected 0 arguments, got 1

也许您想将结果保存在 PipelineConfigKey 中。为此使用这种方式

创建结果结构

type Result struct {
    Name string
}

和扫描结果

db.Raw(sql).Scan(&result)

完整代码:

type Result struct {
        Name string
}

func GetPipelineConfigKey(riskConfigKey string) string{
    sql := fmt.Sprintf("SELECT context_name FROM hawk_context_name WHERE id = (SELECT service_line_id FROM risk_predict_config_key WHERE config_key = '%s');", riskConfigKey)
    db.Raw(sql).Scan(&result)
    return result.Name
}