Задать вопрос
MikeVL
@MikeVL

Как подружить pgx/pgtype с sqlx?

Доброго времени суток!

Прошу вашей помощи. Пытаюсь использовать github.com/jackc/pgx/pgtype с github.com/jmoiron/sqlx
но при сохранении получаю ошибку `pdateRubrica failed: sql: converting argument $1 type: unsupported type pgtype.Varchar, a struct`. Если заменить pgtype на обычные то всё работает. Как можно заставить работать ?

Вот пример кода:
type Rubrica struct {
	ID     pgtype.Int2    `db:"id"`
	Name   pgtype.Varchar `db:"name"`
	Weight pgtype.Int2    `db:"weight"`
}

func Connect(ctx context.Context) *TOPStore {
	d := &stdlib.DriverConfig{
		ConnConfig: pgx.ConnConfig{
			PreferSimpleProtocol: true,
			RuntimeParams: map[string]string{
				"standard_conforming_strings": "on",
			},
		},
	}
	stdlib.RegisterDriverConfig(d)

	db, err := sqlx.Connect("pgx", d.ConnectionString(connString))
	if err != nil {
		log.Fatalf("failed to sqlx Open: %v", err)
	}
	return db
}

func (s *Store) UpdateRubrica(rub *store.Rubrica) error {
	sql := `UPDATE rubricator SET name=:name, weight=:weight WHERE id=:id`
	if _, err := s.db.NamedExec(sql, rub); err != nil {
		log.Fatalf("UpdateRubrica failed: %-v\n", err)
	}
	return nil
}

func main() {
       ...
	rubrica := store.GetRubrica(1)
	store.UpdateRubrica(rubrica)
}
  • Вопрос задан
  • 2255 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@SkipUFO
if _, err := s.db.NamedExec(sql, rub.Name, rub.Weight, rub.ID); err != nil {
    log.Fatalf("UpdateRubrica failed: %-v\n", err)
  }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы