使用 mysql 驱动程序在 golang 中使用参数执行查询时出错
Posted
技术标签:
【中文标题】使用 mysql 驱动程序在 golang 中使用参数执行查询时出错【英文标题】:Error executing query with parameters in golang with mysql driver 【发布时间】:2021-04-03 22:19:46 【问题描述】:我创建了一个在 mysql 数据库上执行查询的函数。 我使用这个包“github.com/go-sql-driver/mysql”
但是如果我运行这个:
...
err := database.ExecuteSql("INSERT INTO xxx(field1, field2, field3) VALUES(?, ?, ?)", "field1", 123, time.Now())
...
func ExecuteSql(cmd string, , args ...interface) error
ctx := context.Background()
_, err := db.ExecContext(ctx, cmd, args)
ctx.Done()
...
它返回给我“sql:转换参数 $1 类型:不支持的类型 []interface ,接口切片”
【问题讨论】:
你试过_, err := db.ExecContext(ctx, cmd, args...)
吗?
你是对的!!!谢谢,贴出来,我会标记为正确的!
【参考方案1】:
当你执行这样的方法时:
_, err := db.ExecContext(ctx, cmd, args)
您将 args
作为唯一一个 []interface
参数传递。不支持切片作为 ExecContext
方法的参数,除非它的 []byte
。
您需要使用带有args
的解包运算符:
_, err := db.ExecContext(ctx, cmd, args...)
【讨论】:
以上是关于使用 mysql 驱动程序在 golang 中使用参数执行查询时出错的主要内容,如果未能解决你的问题,请参考以下文章