Горм использует по умолчанию ID
в качестве первичного ключа. Это часть gorm.Model
, которую вы встраиваете.
При встраивании gorm.Model
вы должны опустить ID
, поскольку gorm уже включает его. Альтернатива - удалить встроенный gorm.Model
и указать ID
самостоятельно.
Процитирую соглашения Горм стр:
gorm.Model - это базовая структура GoLang, которая включает в себя следующее
поля: ID, CreatedAt, UpdatedAt, DeletedAt. * 1020 *
Он может быть встроен в вашу модель или вы можете построить свою собственную модель
без него.
Причиной сбоя при создании схемы в отличие от компиляции является то, что многие базы данных (включая CockroachDB) выполняют проверку без учета регистра, если вы не заключаете в кавычки имена объектов (Id
соответствует id
, а "Id"
- нет) , Это приводит к двум отдельным именам столбцов, которые совпадают по сравнению с регистронезависимостью.