Lonelypatients° 2020-04-26 18:22 采纳率: 100%
浏览 618
已采纳

go 语言 beego web 服务 在循环插入数据时 报错: Error 1062: Duplicate entry '32' for key 'PRIMARY',有大佬帮忙吗?


var product_sku models.TProductSku
        for _, i := range strings.Split(getproduct.SpecificationValues, ",") {
            product_sku.ProductId = getproduct.Id
            product_sku.ProductNumber = getproduct.ProductNumber
            product_sku.SpecificationValue = i
            product_sku.Status = 1
            if _, err := o.Insert(&product_sku); err != nil {
                logs.Error(err)
                return
            }
            msg["code"] = 200
            msg["message"] = "Data insertion successful"
            this.Data["json"] = msg
            this.ServeJSON()
            return

据说是主键没自增,但是有的!
然后百度查到说,需要初始化结构体, 不知怎么操作?

继各位大佬回答之后呢, 我贴出我的结构体:


//SKU
type TProductSku struct {
    Id                 int     `json:"id"`
    ProductId          int     `orm:"index" json:"product_id"`
    ProductNumber      string  `orm:"size(255)" json:"product_number"`

    SpecificationValue string  `orm:"null" json:"specification_value"` //规格值

    Status             byte    `orm:"default(1)" json:"status"` //1正常  0 取消
    Base
}

大概也就是我操作循环插入时, 并没有自己操作主键的插入, 所以他是自增的, 唯一的问题是, 例如我有三条数据 [{1,"123","z"},{1,"123","z"},{1,"123","z"},],循环插入第一条可以入库, 如果是空表,那么第一条的主键id 为 1 , 当插入第二条时 就显示报错 主键id 1 重复条目

问题已经解决!

还是考虑初始化的问题, 然后把

var product_sku models.TProductSku

放进for循环里, 每一次循环都去初始化化一次结构体.
不知道这样性能消耗是怎么样, 还有没有更好的办法...
但是目前来说是解决了当下的问题

  • 写回答

2条回答 默认 最新

  • random_w 2020-04-27 09:49
    关注

    从报错看,是因为数据写入的时候,发现32这个主键已经存在,主键是不能重复的所以报错,有三种解决方法:
    (1)你可以把数据库里面主键未32的数据删除然后再写入
    (2)修改要写入数据的主键,然后写入。
    (3)写入时忽略主键,让系统自动生成主键。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 vc6.0中想运行代码的时候总是提示无法打开文件是怎么回事
  • ¥25 关于##爬虫##的问题,如何解决?:
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题