Я пытаюсь создать несколько таблиц базы данных на основе структур, которые я определил в Golang, используя Gorm . Моя модель использует UUID для первичных ключей вместо UINT:
type Definition struct {
ID csuuid.UUID `json:"id" gorm:"type:uuid;primary_key"`
Name string `json:"name" gorm:"size:50"`
AppID string `json:"app_id" gorm:"size:32;not null;index"`
Protocol Protocol `json:"protocol" gorm:"size:10;not null"`
Host *string `json:"host" gorm:"size:100"`
AuthType *AuthType `json:"auth_type" gorm:"size:10"`
AuthKeyName *string `json:"auth_key_name" gorm:"size:25"`
MultiInstance bool `json:"multi_instance"`
UserAgent string `json:"user_agent" gorm:"size:100"`
Services []Service `json:"services"`
ConfigSchemaID *uint `json:"-"`
ConfigSchema *Schema `json:"config_schema" gorm:"foreignkey:ConfigSchemaID;association_foreignkey:ID"`
Schemas map[string]string `json:"schemas" gorm:"-"`
AuditableTable
}
type Service struct {
ID csuuid.UUID `json:"id" gorm:"type:uuid;primary_key"`
Name string `json:"name" gorm:"size:50;not null;"`
Verb *Verb `json:"verb" gorm:"size:10"`
Path string `json:"path"`
Schema *string `json:"schema" gorm:"-"`
Type ServiceType `json:"type" gorm:"size:10"`
DefinitionID csuuid.UUID `json:"-" gorm:"not null;"`
Definition *Definition `json:"definition" gorm:"foreignkey:DefinitionID;association_foreignkey:ID"`
InputSchemaID *uint `json:"-"`
InputSchema *Schema `json:"input_schema" gorm:"foreignkey:InputSchemaID;association_foreignkey:ID"`
ResponseSchemaID *uint `json:"-"`
ResponseSchema *Schema `json:"response_schema" gorm:"foreignkey:ResponseSchemaID;association_foreignkey:ID"`
ConfigSchemaID *uint `json:"-"`
ConfigSchema *Schema `json:"config_schema" gorm:"foreignkey:ConfigSchemaID;association_foreignkey:ID"`
QueryTermTypes []*QueryTermType `json:"-" gorm:"many2many:service_query_term_types"`
RequestConfig *string `json:"request_config,omitempty" gorm:"type:mediumtext"`
DisplayTemplates []*DisplayTemplate `json:"display_templates"`
AuditableTable
}
// Schema stores details for a schema
type Schema struct {
ID csuuid.UUID `gorm:"type:uuid"`
Value string `gorm:"type:mediumtext"`
AuditableTable
}
// QueryTermType stores details of Query term type
type QueryTermType struct {
ID uint `json:"id"`
Name string `json:"name" gorm:"size:25;index;unique;not null"`
Services []Service `gorm:"many2many:service_query_term_types"`
}
csuuid - это обертка вокруг https://github.com/gofrs/uuid
Когда я вызываю AutoMigrate
на этом выдает ошибку: error='Error 1072: Key column 'id' doesn't exist in table'
. Похоже, у меня есть столбец id
в таблице, которую я пытаюсь создать, а также дочерние таблицы, на которые он ссылается - почему он говорит, что его не существует?