我可以在Gorm中以这种方式使用复合主键吗?为什么SQLSTATE 42830出错?

我可以在Gorm中以这种方式使用复合主键吗?为什么SQLSTATE 42830出错?,go,go-gorm,gorm-mysql,Go,Go Gorm,Gorm Mysql,我需要使用复合主键创建这些表: 类型租户结构{ 戈姆模型 描述字符串 } 类型BaseModel结构{ 戈姆模型 TenantID uint`gorm:“主键”` 租客 } 类型播放器结构{ 基本模型 名称字符串 团队[]团队 } 类型团队结构{ 基本模型 名称字符串 普莱厄利德酒店 } 但如果我使用: myDB.AutoMigrate( &租户{}, &玩家{}, &小组{}, ) 它包含以下内容: C:/go/pkg/mod/gorm.io/driver/postgres@v1.1.0/

我需要使用复合主键创建这些表:

类型租户结构{
戈姆模型
描述字符串
}
类型BaseModel结构{
戈姆模型
TenantID uint`gorm:“主键”`
租客
}
类型播放器结构{
基本模型
名称字符串
团队[]团队
}
类型团队结构{
基本模型
名称字符串
普莱厄利德酒店
}
但如果我使用:

myDB.AutoMigrate(
&租户{},
&玩家{},
&小组{},
)
它包含以下内容:

C:/go/pkg/mod/gorm.io/driver/postgres@v1.1.0/migrator.go:157 ERROR: there is no unique constraint matching given keys for referenced table "players" (SQLSTATE 42830)
[15.960ms] [rows:0] CREATE TABLE "teams" ("id" bigserial,"created_at" timestamptz,"updated_at" timestamptz,"deleted_at" timestamptz,"tenant_id" bigint,"name" text,"player_id" bigint,PRIMARY KEY ("id","tenant_id"),CONSTRAINT "fk_teams_tenant" FOREIGN KEY ("tenant_id") REFERENCES "tenants"("id"),CONSTRAINT "fk_players_teams" FOREIGN KEY ("player_id") REFERENCES "players"("id"))
panic: ERROR: there is no unique constraint matching given keys for referenced table "players" (SQLSTATE 42830)
如果我从
BaseModel
中删除
Tenant
,它会工作

我可以这样使用组合主键吗

你能告诉我为什么它不起作用吗?

更新

问题是它产生了这样的结果:

创建表“团队”(
“id”大序列号,
“创建于”时间戳,
“更新的”时间戳,
“已删除”时间戳,
“租户id”BIGINT,
“名称”文本,
“玩家id”BIGINT不为空,
主键(“id”、“租户id”),
约束“fk_团队_租户”外键(“租户id”)引用“租户”(“id”),
约束“fk_玩家团队”外键(“玩家id”)引用“玩家”(“id”)
)
而不是:

创建表“团队”(
“id”大序列号,
“创建于”时间戳,
“更新的”时间戳,
“已删除”时间戳,
“租户id”BIGINT,
“名称”文本,
“玩家id”BIGINT不为空,
主键(“id”、“租户id”),
约束“fk_团队_租户”外键(“租户id”)引用“租户”(“id”),
约束“fk_玩家团队”外键(“玩家id”、“租户id”)引用“玩家”(“id”、“租户id”)
)
这就是区别:

- CONSTRAINT "fk_players_teams" FOREIGN KEY ("player_id") REFERENCES "players"("id")
+ CONSTRAINT "fk_players_teams" FOREIGN KEY ( "player_id", "tenant_id" ) REFERENCES "players" ( "id", "tenant_id" )
这是我的错吗