Bladeren bron

修复casbin导致连接泄露问题

pixel 3 jaren geleden
bovenliggende
commit
5488bbe291
2 gewijzigde bestanden met toevoegingen van 9 en 4 verwijderingen
  1. 1 2
      server/service/sys_casbin.go
  2. 8 2
      server/service/sys_initdb.go

+ 1 - 2
server/service/sys_casbin.go

@@ -90,8 +90,7 @@ func ClearCasbin(v int, p ...string) bool {
 //@return: *casbin.Enforcer
 
 func Casbin() *casbin.Enforcer {
-	admin := global.GVA_CONFIG.Mysql
-	a, _ := gormadapter.NewAdapter(global.GVA_CONFIG.System.DbType, admin.Username+":"+admin.Password+"@("+admin.Path+")/"+admin.Dbname, true)
+	a, _ := gormadapter.NewAdapterByDB(global.GVA_DB)
 	e, _ := casbin.NewEnforcer(global.GVA_CONFIG.Casbin.ModelPath, a)
 	e.AddFunction("ParamsMatch", ParamsMatchFunc)
 	_ = e.LoadPolicy()

+ 8 - 2
server/service/sys_initdb.go

@@ -41,7 +41,12 @@ func createTable(dsn string, driver string, createSql string) error {
 	if err != nil {
 		return err
 	}
-	defer db.Close()
+	defer func(db *sql.DB) {
+		err := db.Close()
+		if err != nil {
+
+		}
+	}(db)
 	if err = db.Ping(); err != nil {
 		return err
 	}
@@ -82,7 +87,6 @@ func InitDB(conf request.InitDB) error {
 		conf.Port = "3306"
 	}
 	dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/", conf.UserName, conf.Password, conf.Host, conf.Port)
-	fmt.Println(dsn)
 	createSql := fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;", conf.DBName)
 	if err := createTable(dsn, "mysql", createSql); err != nil {
 		return err
@@ -117,6 +121,7 @@ func InitDB(conf request.InitDB) error {
 		//global.GVA_LOG.Error("MySQL启动异常", zap.Any("err", err))
 		//os.Exit(0)
 		//return nil
+		_ = writeConfig(global.GVA_VP, BaseMysql)
 		return nil
 	} else {
 		sqlDB, _ := db.DB()
@@ -142,6 +147,7 @@ func InitDB(conf request.InitDB) error {
 		model.SysOperationRecord{},
 	)
 	if err != nil {
+		_ = writeConfig(global.GVA_VP, BaseMysql)
 		return err
 	}
 	err = initDB(