栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

关于gorm的auto

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于gorm的auto

关于gorm的auto_increment无效的问题

今天在使用gorm建表时发现,当自己自定义gorm.model时,id字段没法自增了。
id字段的代码具体如下

ID	int	`gorm:"primary_key;type:bigint(20);not null;comment:'ID';" json:"id"`

起初看了这篇博客,明白了需要在配置中增加auto_increment字段才能自增。
[Golang]Gorm使用汇总
但是发现即使写成这样还是无法自增:

ID	int	`gorm:"primary_key;type:bigint(20);not null;comment:'ID';auto_increment;" json:"id"`

接着我查到了这两篇博客:
01-【gorm】golang常用库:gorm基本使用
Golang持久化框架 gorm 创建表时 auto_increment 不生效问题
根据博客意思,我猜想是bigint的问题,所以在bigint上纠结了好久。
直到最后,我找到了这篇博客:
GORM升级V2过程中的注意事项
这里直接引用一下博客中的代码段

type API struct {
    Id      int64  `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`      // 主键自增 成功
    Id      int64  `json:"id" gorm:"column:id;primaryKey;AUTO_INCREMENT"`       // 主键自增 成功
    Id      int64  `json:"id" gorm:"column:id;primaryKey;autoIncrement"`        // 主键自增 成功
    Id      int64  `json:"id" gorm:"column:id;primary_key;autoIncrement"`       // 主键自增 成功

    Id      int64  `json:"id" gorm:"column:id;type:bigint(20);primaryKey;auto_increment"`   // 主键不自增 失败
    Id      int64  `json:"id" gorm:"column:id;type:bigint(20);primaryKey;autoIncrement"`    // 主键不自增 失败
    Id      int64  `json:"id" gorm:"column:id;type:bigint(20);primaryKey;AUTO_INCREMENT"`   // 主键不自增 失败

    Id      int64  `json:"id" gorm:"column:id;type:bigint(20) auto_increment;primary_key"`   // 主键自增 成功
    Id      int64  `json:"id" gorm:"column:id;type:bigint(20) autoIncrement;primaryKey"`     // Error 1064: You have an error in your SQL syntax; 
    Id      int64  `json:"id" gorm:"column:id;type:bigint(20) AUTO_INCREMENT;primaryKey"`    // 主键自增 成功

    Id      int64  `json:"id" gorm:"column:id;primaryKey;type:bigint(20) autoIncrement;"`    // Error 1064: You have an error in your SQL syntax;
    Id      int64  `json:"id" gorm:"column:id;primaryKey;type:bigint(20) auto_increment;"`   // 主键自增 成功
    Id      int64  `json:"id" gorm:"column:id;type:bigint(20) auto_increment;primaryKey"`    // 主键自增 成功
}

通过反复比较,我明白了问题所在,auto_increment并不是一个单独的字段,而是type中的一个值。如果在type后面加个分号再加auto_increment,如这样:type:bigint(20);auto_increment;,那么自增就无法成功设置。想要自增必须设置成这样:type:bigint(20) auto_increment;,将auto_increment放在type里面,才能成功自增。
最终id字段的代码如下:

ID	int	`gorm:"primary_key;type:bigint(20) auto_increment;not null;comment:'ID';" json:"id"`
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991222.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号