近日使用xorm插入多条数据时发现出错Error 1390: Prepared statement contains too many placeholders
网上发现是占位符过多,原来是xorm生成了多条insertsql一起执行报的错,一条sql占位符不能超过65535个
我使用得解决办法是分批次插入
//插入前判断是否大于2000条,如果大于2000就分批
func preInsert(acc []int) error {
index := 0
//如果不超过两千条即直接插入即可
if len(acc) < 2000 { //这里分为两千条插入一次
//直接插入 //todo
fmt.Println(acc) //这里改为插入函数
return nil
}
//分批插入
for index < len(acc) {
if index+2000 > len(acc) {
fmt.Println("插入区间",index,len(acc))
//todo
fmt.Println( acc[index:]) //这里改为插入函数
index = len(acc)
break
} else {
fmt.Println("插入区间",index,index+2000)
//todo
fmt.Println( acc[index:index+2000]) //这里改为插入函数
index += 2000
}
}
return nil
}