Горм говорит, что не может найти столбец при создании таблиц - PullRequest
1 голос
/ 11 апреля 2020

Я пытаюсь создать несколько таблиц базы данных на основе структур, которые я определил в 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 в таблице, которую я пытаюсь создать, а также дочерние таблицы, на которые он ссылается - почему он говорит, что его не существует?

...