Переход с lib/pq на jackc/pgx

После переноса проекта на "https://godoc.org/github.com/jackc/pgx " у меня появляется ошибка при каждом запросе:

expected 0 arguments, got 1

Я заметил, что при сканировании возникает ошибка

Вот простой блок кода:

sql := `SELECT location FROM tb_champ WHERE is_active = true LIMIT 1;`
var location string
row := app.Repo.QueryRow(sql)
fmt.Printf("%T\n %v\n\n", row, row)
err = row.Scan(&location)
if err != nil {
    fmt.Println(err)
}
fmt.Println(location)

Вот результат:

*pgx.connRow
&{0xc0000b2048 0xc000152240 0xc0001441e0 [] 0 0xc0000a26c0 [] {13797143304121583776 6737745 0x1a8c9c0} SELECT location FROM tb_champ WHERE is_active = true LIMIT 1; [[]] true <nil> <nil>}

expected 0 arguments, got 1

Моя структура приложения:

type App struct {
   Config       *Config
   Logger       *Logger
   Repo         Repository
}

...

type Repository interface {
   Exec(query string, args ...interface{}) (pgconn.CommandTag, error)
   Query(query string, args ...interface{}) (pgx.Rows, error)
   QueryRow(query string, args ...interface{}) pgx.Row
   Close() error
}

PGRepository, реализующий репозиторий:

type PGRepository struct {
    *pgxpool.Pool
}

... Вот реализация QueryRow:

func (pg *PGRepository) QueryRow(query string, args ...interface{}) pgx.Row {
   tx, err := pg.Begin(context.Background())
   if err != nil {
       return nil
   }
   defer tx.Rollback(context.Background())

   res := tx.QueryRow(context.Background(), query, args)
   if err != nil {
       return nil
   }

   err = tx.Commit(context.Background())
   if err != nil {
       return nil
   }

   return res
}

Нужна помощь! Я не понимаю, о каких аргументах ошибка? Как исправить эту ошибку?

ПОСЛЕ @mkopriva КОММЕНТАРИЙ (стыдно за свой код):

res := tx.QueryRow(context.Background(), query, args)

изменился на

res := tx.QueryRow(context.Background(), query, args...)

Ошибка аргумента исчезла. Но теперь проблема вtx.Commit появилась строка: conn busy

0 ответов

Другие вопросы по тегам