From 2c131e30c8dbedce5c689216fcb6db963980095a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=AD=90=E9=93=AD?= Date: Thu, 20 Mar 2025 17:10:21 +0800 Subject: [PATCH] =?UTF-8?q?db=20fail=20=E5=BD=93=E5=89=8D=E6=89=93?= =?UTF-8?q?=E5=BC=80=E8=BF=9E=E6=8E=A5=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/data/gorm.go | 4 +++- internal/data/repoimpl/order.go | 7 ++++++- internal/data/repoimpl/product.go | 7 ++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/internal/data/gorm.go b/internal/data/gorm.go index 0576fd8..7364413 100644 --- a/internal/data/gorm.go +++ b/internal/data/gorm.go @@ -52,7 +52,9 @@ func db(data *conf.Data_Database) (*gorm.DB, func()) { // SetMaxOpenConns sets the maximum number of openapi connections to the database. sqlDB.SetMaxOpenConns(int(data.MaxOpen)) // SetConnMaxLifetime sets the maximum amount of time a connection may be reused. - sqlDB.SetConnMaxLifetime(1 * time.Hour) + //sqlDB.SetConnMaxLifetime(1 * time.Hour) + sqlDB.SetConnMaxLifetime(7200 * time.Second) + sqlDB.SetConnMaxIdleTime(15 * time.Minute) return gormDB, func() { if mysqlConn != nil { diff --git a/internal/data/repoimpl/order.go b/internal/data/repoimpl/order.go index 5413c16..29c96a5 100644 --- a/internal/data/repoimpl/order.go +++ b/internal/data/repoimpl/order.go @@ -3,6 +3,7 @@ package repoimpl import ( "context" "fmt" + "github.com/go-kratos/kratos/v2/log" "gorm.io/gorm" "time" "unicode/utf8" @@ -84,9 +85,13 @@ func (p *OrderRepoImpl) Create(ctx context.Context, req *bo.OrderBo) (*bo.OrderB func (p *OrderRepoImpl) GetByOutBizNo(ctx context.Context, t vo.OrderType, outBizNo string) (*bo.OrderBo, error) { info := &model.Order{} - tx := p.DB(ctx).Where(model.Order{Type: t.GetValue(), OutBizNo: outBizNo}).Find(&info) + db := p.DB(ctx) + tx := db.Where(model.Order{Type: t.GetValue(), OutBizNo: outBizNo}).Find(&info) if tx.Error != nil { + sqlDB, _ := db.DB() + log.Warnf("order 当前打开连接数: %d ,空闲连接数: ", sqlDB.Stats().OpenConnections, sqlDB.Stats().Idle) + return nil, fmt.Errorf("order db fail %w", tx.Error) } diff --git a/internal/data/repoimpl/product.go b/internal/data/repoimpl/product.go index ff64094..9e693fe 100644 --- a/internal/data/repoimpl/product.go +++ b/internal/data/repoimpl/product.go @@ -3,6 +3,7 @@ package repoimpl import ( "context" "fmt" + "github.com/go-kratos/kratos/v2/log" "gorm.io/gorm" err2 "voucher/api/err" "voucher/internal/biz/bo" @@ -29,9 +30,13 @@ func (p *ProductRepoImpl) DB(ctx context.Context) *gorm.DB { func (r *ProductRepoImpl) GetByPNO(ctx context.Context, PNO string) (*bo.ProductBo, error) { var item model.Product - tx := r.DB(ctx).Where(model.Product{ProductNo: PNO}).Find(&item) + db := r.DB(ctx) + tx := db.Where(model.Product{ProductNo: PNO}).Find(&item) if tx.Error != nil { + sqlDB, _ := db.DB() + log.Warnf("当前打开连接数: %d ,空闲连接数: ", sqlDB.Stats().OpenConnections, sqlDB.Stats().Idle) + return nil, fmt.Errorf("product db fail %w", tx.Error) }