我遇到了 Go 的 GORM 问题。当我尝试将实体保存到其中包含模型的数据库时,它不会将外键与所有者模型一起保存。
下面是我的模型、MySQL 脚本以及我将模型保存/创建到数据库中的方式。
我得到的错误是:字段'business_industry_id'没有默认值
type Business struct {
gorm.Model
BusinessName string `json:"BusinessName" binding:"required" gorm:"column:business_name;type:varchar(100);unique;not null"`
BusinessIndustry Industry `json:"BusinessIndustry" binding:"required" gorm:"foreignkey:id"`
}
type Industry struct {
gorm.Model
Name string `json:"Name" gorm:"column:name;type:varchar(100);unique;not null"`
}
CREATE TABLE `industries`
(
id INT(6) AUTO_INCREMENT,
name VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT current_timestamp,
deleted_at TIMESTAMP,
updated_at TIMESTAMP,
PRIMARY KEY (id)
);
CREATE TABLE `businesses`
(
id INT(6) AUTO_INCREMENT,
business_name VARCHAR(100) NOT NULL UNIQUE,
business_industry_id INT(6) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT current_timestamp,
deleted_at TIMESTAMP,
updated_at TIMESTAMP,
PRIMARY KEY (id),
FOREIGN KEY (business_industry_id) REFERENCES industries (id)
);
err := bs.database.Create(business).Error
我尝试从模型中删除 Grom 属性,让框架自己解决,但我得到了同样的错误。
当我检查模型时,行业的 id 为 3(因为我之前自己解决了它),在我保存后,ID 为 0。但是当我删除属性时,保存后的 id 也是 3,但发生了同样的错误。
我知道错误消息的含义,因为记录的 sql 消息实际上并未将 3 插入 business_industry_id 字段。我不知道的是,为什么它不插入它。
侃侃无极
相关分类