试图通过pgx打开sql连接时出错



我有一些奇怪的问题。尝试通过pgx驱动程序连接到sql db,但错误:无法打开db conn: sql:未知驱动程序"pgx"是发生。我找不到这个问题的答案,也许我在一些cfg失败了?下面是代码:


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
}

我试图找到这个问题的答案,但是没有。我该试试什么?

。Mod没问题,driver也没问题,那到底是什么呢?

要使用标准sql包,您必须导入github.com/jackc/pgx/v5/stdlib,而不是github.com/jackc/pgx/v5:

package main
import (
"database/sql"
"os"
_ "github.com/jackc/pgx/v5/stdlib"
)
func main() {
db, err := sql.Open("pgx", os.Getenv("DATABASE_URL"))
// ...
}

看到https://github.com/jackc/pgx/wiki/Getting-started-with-pgx-through-database-sql hello-world-from-postgresql

最新更新