Переход с 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