I have some strange issue. Try to connect to sql db by pgx driver, but error: can't open db conn: sql: unknown driver "pgx" is occured. I can't find any answer for this issue, maybe I failed in some cfg? Here is code:
import (
"database/sql"
"fmt"
"time"
"gitlab.wildberries.ru/wbx-team/wbx-authorization/identification/config"
// Driver for PostgresSQL db.
_ "github.com/jackc/pgx/v5"
)
type Logger interface {
Info(args ...interface{})
}
type Provider struct {
db *sql.DB
cs string
idlConns int
openConns int
lifetime time.Duration
cfg *config.Config
logger Logger
}
func New(cfg *config.Config, logger Logger) *Provider {
info := fmt.Sprintf(
"user=%s password=%s host=%s port=%d dbname=%s sslmode=disable",
cfg.SQLDataBase.UserID,
cfg.SQLDataBase.Password,
cfg.SQLDataBase.Server,
cfg.SQLDataBase.Port,
cfg.SQLDataBase.Database,
)
return &Provider{
cs: info,
idlConns: cfg.SQLDataBase.MaxIdleCons,
openConns: cfg.SQLDataBase.MaxOpenCons,
lifetime: time.Duration(cfg.SQLDataBase.ConnMaxLifetime) * time.Minute,
cfg: cfg,
logger: logger,
}
}
func (p *Provider) Open() error {
var err error
p.db, err = sql.Open("pgx", p.cs)
if err != nil {
return fmt.Errorf("can't open db conn: %w", err)
}
p.db.SetMaxIdleConns(p.idlConns)
p.db.SetMaxOpenConns(p.openConns)
p.db.SetConnMaxLifetime(p.lifetime)
err = p.db.Ping()
if err != nil {
return fmt.Errorf("can't ping db: %w", err)
}
p.logger.Info("pg connection open")
return nil
}
func (p *Provider) GetConn() *sql.DB {
return p.db
}
I tried to find any answer for this, but there is no. What should I try?
go.mod is ok, driver is ok, so what is it?