【发布时间】:2020-05-07 05:55:25
【问题描述】:
我试图在Password 表上创建一个外键,它必须指向User 表内的id 列。但是当我尝试以下操作时,它不起作用。 foreign key 未生成。它只是在password 表中添加列名user_id。
package schema
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
type User struct {
gorm.Model
FirstName string `gorm:"not null"`
LastName string `gorm:"not null"`
Email string `gorm:"type:varchar(100);unique_index"`
IsActive bool `gorm:"not null"`
IsVerified bool `gorm:"not null"`
}
type Password struct {
gorm.Model
Password string `gorm:"not null"`
UserId int `gorm:"not null"`
User User `gorm:"foreignkey:UserId;association_foreignkey:id"`
}
func SyncDB(db *gorm.DB) {
db.AutoMigrate(&User{})
db.AutoMigrate(&Password{})
}
我做错了什么?如何在 Password 表中创建指向 User 表的外键?
【问题讨论】:
-
在 mysql 中,您必须在用户中有一个 id(并且需要对其进行索引)才能使 FK 有效。我不了解 gorm - 它对你有用吗?
-
您在用户字段的 gorm 标记中放错了右双引号。运行
go vet查找此类错误。 -
@Peter 更新了我的问题。即使修复了双引号,它也不起作用
-
@Peter 在看到使用
show create table password的架构时,我找不到任何外键约束