【发布时间】:2020-12-13 08:17:18
【问题描述】:
我是 golang 的新手。
这是我的代码:
//main.go
type Project struct {
gorm.Model
Name string
}
type Log struct {
gorm.Model
Project Project
User User
CheckPoint string
Status uint
}
type User struct {
gorm.Model
Name string
Password string
}
//...
db.AutoMigrate(&Project{}, &Log{}, &User{})
我想:
Log.Project ==> Project.ID
Log.User ==> User.ID
但在数据库日志表中,它是:
desc logs;
+-------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
| deleted_at | datetime | YES | MUL | NULL | |
| check_point | varchar(255) | YES | | NULL | |
| status | int(10) unsigned | YES | | NULL | |
+-------------+------------------+------+-----+---------+----------------+
我看不到 ProjectID 和 UserID。
有什么指导吗?
提前谢谢你。
在 0825 上编辑:
你好, 也许我需要先解释一下自己。
我需要三个表:项目、用户、日志。
在日志中,它记录了which user 做了what 到which project。
我改变了一点:
type Project struct {
gorm.Model
Name string
}
type User struct {
gorm.Model
Name string
Password string
}
type Log struct {
gorm.Model
ProjectID uint
UserID uint
CheckPoint string // ie: what to record
Status uint // ie: record's status
}
...
db.Debug().Model(&Log{}).AddForeignKey("user_id", "users(id)", "RESTRICT", "RESTRICT")
db.Debug().Model(&Log{}).AddForeignKey("project_id", "projects(id)", "RESTRICT", "RESTRICT")
当我运行代码时,
Error 1452: Cannot add or update a child row: a foreign key constraint fails (`test`.`logs`, CONSTRAINT `logs_project_id_projects_id_foreign` FOREIGN KEY (`project_id`) REFERENCES `projects` (`id`))
Error 1452: Cannot add or update a child row: a foreign key constraint fails (`test`.`#sql-1a0f3_18`, CONSTRAINT `logs_user_id_users_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`))
我迷路了。
【问题讨论】: