首页 > 解决方案 > 父表 GORM 2.0 中的外键 AUTO INCREMENTS 时无法创建 HAS MANY 关系

问题描述

探索自动在数据库中创建约束的 GORM 2.0 的 AutoMigrate,当我使用在其父表中自动递增的外键用于 HAS MANY 关系时,它会引发此错误:

错误 1075:表定义不正确;只能有一个自动列,并且必须将其定义为键

这是代码:

type Person struct {
    ID      uint     `gorm:"primaryKey;type:INT UNSIGNED AUTO_INCREMENT;"`
    Clothes *[]Cloth `gorm:"foreignKey:OwnerID;"`
}

type Cloth struct {
    ClothID uint `gorm:"primaryKey;type:INT UNSIGNED AUTO_INCREMENT;"`
    OwnerID uint `gorm:"index;type:INT UNSIGNED;autoIncrement:false;"` //foreign key
    Color   string
}

在主函数中:

db.AutoMigrate(&Person{})
db.AutoMigrate(&Cloth{})

OwnerID 列(外键)不应该增加,但 GORM 不会让我这样创建它。

我正在使用 MySQL 数据库。不知道是不是bug,请帮忙:)

标签: mysqlgogo-gorm

解决方案


推荐阅读