go data_error ai_generated true

错误:sql:期望1个参数,得到2个

error: sql: expected 1 argument, got 2

ID: go/database-sql-prepare-statement-error

其他格式: JSON · Markdown 中文 · English
80%修复率
85%置信度
0证据数
2024-10-01首次发现

版本兼容性

版本状态引入弃用备注
1.20 active
1.21 active

根因分析

提供给预编译语句的参数数量与查询中的占位符数量不匹配。

English

The number of arguments provided to a prepared statement does not match the number of placeholders in the query.

generic

解决方案

  1. 90% 成功率 Use named parameters with sql.Named
    stmt, err := db.PrepareContext(ctx, "INSERT INTO users(name, age) VALUES(@name, @age)")
    if err != nil { return err }
    _, err = stmt.ExecContext(ctx, sql.Named("name", "Alice"), sql.Named("age", 30))

无效尝试

常见但无效的做法:

  1. Counting placeholders manually 70% 失败

    Error-prone for complex queries; use named parameters or helper functions.