создание новой записи в gorm

Я пытаюсь созадть модель в базе данных через GetDB().Create(&user), где GetDB возращает *gorm.DB, а user экхемпляр модели User:

type User struct {
    ID       uint `gorm:"primaryKey"`
    Login    string
    Password string
}

Однако, я получаю ошибку: cmd/db/user.go:8 UNIQUE constraint failed: users.id


Ответы (1 шт):

Автор решения: Senior Pomidor

Скорее всего, PK тоже указывается перед сохранением. Это не нужно делать. все тэги primaryKey по умолчанию являются AutoIncrement=true. можно указать тэг autoIncrement, чтобы GORM понимал ее суть. Но значение для ключа передавать не нужно.

package model

import (
    `github.com/jinzhu/gorm`
)

type TestModel struct {
    MyId int64 `gorm:"primary_key;auto_increment;not_null"`
    Name string
}

func ModelSave(tx *gorm.DB) {
    tm := TestModel{Name:"Test the model"}
    tx.Save(&tm)
}

запускаем пару раз и получаем

MariaDB [gmodel]> select * from test_models;
+-------+----------------+
| my_id | name           |
+-------+----------------+
|     1 | Test the model |
|     2 | Test the model |
+-------+----------------+
2 rows in set (0.000 sec)

→ Ссылка