我正在使用 github.com/go-sql-driver/mysql 和 mysql 5.7.10。我有一个功能:
bulkSetStatus := func(docVers []*_documentVersion) error {
if len(docVers) > 0 {
query := strings.Repeat("CALL documentVersionSetStatus(?, ?); ", len(docVers))
args := make([]interface{}, 0, len(docVers)*2)
for _, docVer := range docVers {
args = append(args, docVer.Id, docVer.Status)
}
_, err := db.Exec(query, args...)
return err
}
return nil
}
如果len(docVers) == 1但当有更多时,这会起作用,导致CALL存储过程中有多个s,它会出错:
错误 1064:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行的“CALL documentVersionSetStatus(?, ?)”附近使用的正确语法
我也在每次调用之间尝试了一个换行符,但我得到了同样的错误。如果我在 mysql 工作台中运行它,并CALL在此过程中使用多个s,它可以正常工作,我不确定这里的语法有什么问题。
我已经用参数注销了确切的全文,正如预期的那样:
CALL documentVersionSetStatus("9c71cac14a134e7abbc4725997d90d2b", "inprogress"); CALL documentVersionSetStatus("beb65318da96406fa92990426a279efa", "inprogress");
慕姐8265434
暮色呼如
慕森卡
随时随地看视频慕课网APP
相关分类