一、问题:
使用gorm框架批量插入通讯录信息出错:Prepared statement contains too many placeholders。
二、分析:
超过mysql占位符导致,mysql默认占位符大小:m*n<65535,m是行数,n是列数。
参考:https://dev.mysql.com/doc/mysql-errors/5.6/en/server-error-reference.html
三、解决:
分割为每1000个插入一次:
for i := 0; i < len(address); i += 1000 {
end := i + 1000
if end > len(address) {
end = len(address)
}
err := db.Table(tableName).CreateInBatches(address[i:end], len(address[i:end])).Error
if err != nil {
return err
}
}
关注下方微信公众号,了解更多golang及后端开发相关知识: