From d575ed5cb010b3c26cab174b1a252b43698ebc72 Mon Sep 17 00:00:00 2001 From: gazebo Date: Thu, 6 Sep 2018 22:29:08 +0800 Subject: [PATCH] - make gorm.DB singleton. --- globals/gormdb/gormdb.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/globals/gormdb/gormdb.go b/globals/gormdb/gormdb.go index f55e32a3d..7515d39fe 100644 --- a/globals/gormdb/gormdb.go +++ b/globals/gormdb/gormdb.go @@ -9,7 +9,8 @@ import ( ) var ( - dbStr string + dbStr string + singletonDB *gorm.DB ) func Init() { @@ -17,12 +18,17 @@ func Init() { AutoMigrate() } +// todo gorm要求用单一的db?如果每次重新调用Open,会导致too many connection错误 func GetDB() *gorm.DB { - db, err := gorm.Open("mysql", dbStr) - if err == nil { - return db + if singletonDB == nil { + db, err := gorm.Open("mysql", dbStr) + if err == nil { + singletonDB = db + return db + } + panic(fmt.Sprintf("AutoMigrate failed with error:%v", err)) } - panic(fmt.Sprintf("AutoMigrate failed with error:%v", err)) + return singletonDB } func AutoMigrate() { @@ -38,4 +44,5 @@ func AutoMigrate() { db.AutoMigrate(&model.SkuVendorCategory{}, &model.StoreSkuCategoryMap{}, &model.SkuName{}, &model.Sku{}, &model.SkuNamePlaceBind{}, &model.StoreSkuBind{}) db.Set("gorm:table_options", "CHARSET=utf8mb4").AutoMigrate(&model.SkuCategory{}) db.AutoMigrate(&model.WeiXins{}, &model.JxBackendUser{}) + // db.AutoMigrate(&model.DurableTask{}, &model.DurableTaskItem{}) }