"Сообщение": "отношение \" пользователи \ "не существует", Голанг

У меня есть API, написанный на Go, у меня есть следующий набор моделей...

type User struct {
    gorm.Model
    ID       string `sql:"type:varchar(36);primary key"`
    Name     string
    Password string
    Email    string
    Content  []Content
    Location string
    Tracks   []Track
    Avatar   string
    BgImg    string
    Artists  []Artist
}

type Artist struct {
    gorm.Model
    ID string `sql:"type:varchar(36);primary key"`
}

type Content struct {
    gorm.Model
    ID string `sql:"type:varchar(36);primary key"`
}

type Track struct {
    gorm.Model
    ID string `sql:"type:varchar(36);primary key"`
}

в моем main.go файл, я инициализирую свою базу данных с...

drivers.DB().CreateTable(&models.User{})
drivers.DB().CreateTable(&models.Artist{})
drivers.DB().CreateTable(&models.Content{})
drivers.DB().CreateTable(&models.Track{})

Но я получаю ошибку...

{
  "_message": {
    "Severity": "ERROR",
    "Code": "42P01",
    "Message": "relation \"users\" does not exist",
    "Detail": "",
    "Hint": "",
    "Position": "15",
    "InternalPosition": "",
    "InternalQuery": "",
    "Where": "",
    "Schema": "",
    "Table": "",
    "Column": "",
    "DataTypeName": "",
    "Constraint": "",
    "File": "parse_relation.c",
    "Line": "1159",
    "Routine": "parserOpenTable"
  }
}

1 ответ

Решение

Я подозреваю, что это потому, что ваш Artist, Content, а также Track не имеет родительской ссылки на User, Хотя User имеет много ссылок на них. Кроме того, встроенный тип gorm.Model уже имеет поле идентификатора.

Пытаться:

type Artist struct {
    gorm.Model
    ID string `sql:"type:varchar(36);primary key"`
    UserID string `sql:"type:varchar(36)"`
}

type Content struct {
    gorm.Model
    ID string `sql:"type:varchar(36);primary key"`
    UserID string `sql:"type:varchar(36)"`
}

type Track struct {
    gorm.Model
    ID string `sql:"type:varchar(36);primary key"`
    UserID string `sql:"type:varchar(36)"`
}
Другие вопросы по тегам