Gorm不会在多对多关系中创建外键

问题描述 投票:0回答:1

我尝试使用gorm生成数据库时遇到问题。除多对多关系外,所有表和关系(外键)均已成功生成,当我构建数据库时,gorm确实生成了关联表,但没有外键。

我具有以下结构:设备和组。 (组中可以有1个以上的设备,而同一设备中可以有1个以上的设备)

//Group group of devices
type Group struct {
        gorm.Model
        Name    string
        SVG     string
        Devices []*Device `gorm:"many2many:device_group;"`//association_foreignkey:id;foreignkey:id"` 
    }

//设备是单一的医疗测量设备

type Device struct {
    gorm.Model
    DeviceName string
    Svg        string
    IP         string
    LastActive time.Time
    MAC        string
    Version    string
    Groups     []*Group `gorm:"many2many:device_group;"`
}

添加外键:

db.Model(device).AddForeignKey("id", "device_group(device_id)", "CASCADE", "CASCADE")
db.Model(group).AddForeignKey("id", "device_group(group_id)", "CASCADE", "CASCADE")

添加外键功能给我以下错误:

[2020-01-28 11:53:11] pq:没有唯一的约束匹配给定表“ device_group”的给定键]

如您所见:它正在生成device_group表,但是没有外键。我尝试使用字段标签,尝试修改AddForeignKey函数或将其删除,但似乎无济于事。

enter image description here

任何想法?

谢谢

我尝试使用gorm生成数据库时遇到问题。当我正在构建时,除多对多关系外,所有表和关系(外键)均已成功生成...

go many-to-many gorm
1个回答
0
投票

引用的键必须是主键,因此您必须以其他方式添加约束。以下代码对我有用:

© www.soinside.com 2019 - 2024. All rights reserved.