В Go я распаковываю / декодирую JSON в структуру с полем идентификатора типа int.Затем я пытаюсь вставить эту структуру в базу данных PostgreSQL, используя go-pg со столбцом ID в качестве первичного ключа (который имеет ненулевое ограничение).Первая запись имеет 0
в качестве идентификатора.В документации Postgres говорится, что 0
подходит как значение первичного ключа.Тем не менее, я получаю сообщение об ошибке:
«ОШИБКА # 23502 нулевое значение в столбце« число »нарушает ограничение не-ноль».
Похоже, 0
превращается в "нулевое значение" Go, когда оно не маршалируется в значение int.Затем он вставляется как значение null
в Postgres.Буду очень признателен за любые советы, как мне этого избежать.
type Account struct {
Number int `sql:"type:smallint, pk"`
Name string
}
[...]
account := Account{}
err := json.NewDecoder(r.Body).Decode(&account)
[...]
insertErr := pgLayer.db.Insert(&account)
if insertErr != nil {
log.Printf("Error while inserting new item")
return "n/a", insertErr
}