猿问

golang gin gorm 插入并设置 primary_key 但 primary_key 为空

我使用 gin gorm mysql 构建应用程序。


我在 model.go 中设置 topic_id primary_key auto_increment not null 如下:


type Topic struct {

    gorm.Model

    TopicId    uint64 `gorm:"PRIMARY_KEY;AUTO_INCREMENT;NOT NULL"`

    TopicName  string

    TopicDesc  string

    OwnerId    int

    CreateIP   string

    CreateTime uint64

    UpdateTime uint64

}

在 service.go 中创建主题


type TopicCreateService struct{

    TopicName string `form:"topic_name" json:"topic_name" binding:"required,min=1,max=30"`

    TopicDesc string `form:"topic_desc" json:"topic_desc" binding:"required,min=1,max=300"`

    OwnerId int `form:"owner_id" json:"owner_id" binding:"required,min=1,max=30"`

}


func (service *TopicCreateService) Create(c *gin.Context) serializer.Response{

    topic := model.Topic{

        TopicName:service.TopicName,

        TopicDesc:service.TopicDesc,

        OwnerId:service.OwnerId,

        CreateIP:c.ClientIP(),

        CreateTime:uint64(time.Now().UnixNano()),

        UpdateTime:0,

    }


    if err:=model.DB.Create(&topic).Error;err!=nil{

        return serializer.ParamErr("创建话题失败", err)

    }

    return serializer.BuildTopicResponse(topic)

}

我希望 topic_id 是我的 primary_key 而不是 null 自动增量。怎么了?



哆啦的时光机
浏览 411回答 2
2回答

蛊毒传说

你已经包含gorm.Model在你的结构中。这意味着您的模型迁移/数据库将给出错误:Error 1075: Incorrect table definition; there can be only one auto column and it must be defined as a key如果你gorm.Model从你的Topic结构中删除,你会很好。package modelimport (    `github.com/jinzhu/gorm`)type WithoutModel struct {    MyId int64 `gorm:"primary_key;auto_increment;not_null"`    Name string}func ModelSave(tx *gorm.DB) {    wo := WithoutModel{Name:"Without the model"}    tx.Save(&wo)}运行ModelSave几次后,我有:MariaDB [gmodel]> select * from without_models;+-------+-------------------+| my_id | name              |+-------+-------------------+|     1 | Without the model ||     2 | Without the model |+-------+-------------------+2 rows in set (0.000 sec)

茅侃侃

gorm.Model // gorm.Model 定义type Model struct {  ID        uint `gorm:"primary_key"`  CreatedAt time.Time  UpdatedAt time.Time  DeletedAt *time.Time}
随时随地看视频慕课网APP

相关分类

Go
我要回答