Description
多对多关联,表迁移的时候,如果中间表对应的关联表不是主键id的话,创建会报错,报错内容为:
Error 1075: Incorrect table definition; there can be only one auto column and it must be defined as a key
例子:
type Area struct{
ID uint `gorm:"primarykey"` // 主键ID
Code int `json:"code" form:"code" gorm:"column:code;type:int"`
Schools []School `json:"schools" gorm:"many2many:school_areas;foreignKey:Code;joinForeignKey:area_id;references:ID;JoinReferences:school_system_id"`
}
type School struct{
ID uint `gorm:"primarykey"` // 主键ID
Areas []AreaModel `json:"areas" gorm:"many2many:school_areas;foreignKey:ID;joinForeignKey:school_system_id;references:Code;JoinReferences:area_id"`
}
其中中间表为school_areas表
2个主表
主表schools 的主键id字段,对应中间表的school_system_id字段
主表areas 的code字段,对应中间表的area_id字段
自动迁移的时候就会报错,生成的sql为
CREATE TABLE `school_areas` (`area_id` bigint COMMENT '省市编码',`school_system_id` bigint unsigned AUTO_INCREMENT,PRIMARY KEY (`area_id`,`school_system_id`))
数据库运行报1075错误,数据库版本为 5.7+ go版本为 1.16 gorm版本为 v1.21.12
Comment From: fivenull
schools表和areas表主键都需要设置自增
Comment From: a631807682
duplicated of https://github.com/go-gorm/gorm/issues/5320 upgrade gorm version