使用 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 中使用参数执行查询时出错的主要内容,如果未能解决你的问题,请参考以下文章

golang中mysql连接池使用

请教关于在golang中怎么使用进程的问题

只有ECS时无法连接Golang中的RDS mysql

如何让golang mysql驱动程序在2秒内超时ping?

golang 碎片整理之MySQL

无法将mysql数据绑定到golang中的html模板