Я хочу иметь таблицу, первичный ключ которой представляет собой автоматически сгенерированную метку времени (я знаю, что это, как правило, не лучшая идея, но в моем случае это нормально), и в ней есть другое строковое поле. Вот структура данных, которую я использую:
type GlobalDefault struct {
Timestamp time.Time `gorm:"primary_key" sql:"DEFAULT:current_timestamp"`
Version string `sql:"not null"`
}
Когда я использую эту структуру данных с AutoMigrate, я действительно получаю таблицу с меткой времени в качестве первичного ключа, и я даже могу запустить insert into global_defaults (version) VALUES ('1.5.3');
, и новая строка будет вставлена с автоматически созданной меткой времени.
Моя проблема в том, что я не могу вставлять записи в эту таблицу с помощью gorm. Я использую следующую функцию:
func (repository *AgentRepository)SetGlobalDefault(version string) error {
gd := GlobalDefault{ Version:version }
return repository.connection.Create(&gd).Error
}
И когда я его вызываю, я получаю следующую ошибку:
Полученная непредвиденная ошибка не может преобразовать аргумент поля Timestamp из int64 во время.
Если я укажу метку времени явно, это сработает. Я предполагаю, что у него проблема со временем по умолчанию ('0001-01-01 00:00:00 +0000 UTC'), которое создается, когда я не указываю его точно.
Это можно обойти?