2016-03-26 2 views
1

У меня есть API, написанный на Go, у меня есть следующий набор моделей ...«Сообщение»: «Отношение » пользователей «не существует», golang

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" 
    } 
} 
+0

почему Вы добавляете поле идентификатора для каждой структуры? Этот метод «gorm.Model», который вы встраиваете, уже делает. –

+0

Вы пытаетесь переопределить тип первичного ключа gorm.Model 'uint' с' varchar (36) '? –

+0

@JohnWeldon Я, да. Нужно ли удалить gorm.Model? –

ответ

1

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

Try:

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)"` 
} 
+0

Большое вам спасибо! Это потрясающе! –

+0

Добро пожаловать. –

Смежные вопросы