diff --git a/handler/dbm.go b/handler/dbm.go index 0dd97d4..0e948ec 100644 --- a/handler/dbm.go +++ b/handler/dbm.go @@ -168,6 +168,7 @@ func RunSQLHandler(c *gin.Context) { resp.Code = proto.ParameterError resp.Message = "请求参数解析错误" } else { + log.Println("run sql request, sql is:", req.SQL) req.UserID = userID res, err2 := service.RunSQL(&req) if err2 != nil { @@ -179,7 +180,6 @@ func RunSQLHandler(c *gin.Context) { resp.Data = res } } - log.Println("run sql resp, sql is:", req.SQL) c.JSON(http.StatusOK, resp) return } diff --git a/service/dbmService.go b/service/dbmService.go index cddedb0..5cae92d 100644 --- a/service/dbmService.go +++ b/service/dbmService.go @@ -39,7 +39,6 @@ func RunSQL(req *proto.RunSQLRequest) (*proto.SQLResult, error) { func GetGORMDBObject(dbmInfo *proto.DBManage) (db_ *gorm.DB, err error) { dao.DBMMapRWMutex.RLock() - defer dao.DBMMapRWMutex.RUnlock() if dao.DBMMap != nil { dbValue := dao.DBMMap[dbmInfo.ID] if dbValue != nil { @@ -47,6 +46,7 @@ func GetGORMDBObject(dbmInfo *proto.DBManage) (db_ *gorm.DB, err error) { return dbValue.Value, nil } } + dao.DBMMapRWMutex.RUnlock() switch dbmInfo.DB_Type { case proto.DB_TYPE_MYSQL: // MySQL @@ -57,6 +57,7 @@ func GetGORMDBObject(dbmInfo *proto.DBManage) (db_ *gorm.DB, err error) { } case proto.DB_TYPE_POSTGRES: // PostgreSQL dsn := "host=" + dbmInfo.DB_IP + " user=" + dbmInfo.DB_User + " password=" + dbmInfo.DB_Password + " dbname=" + dbmInfo.DB_NAME + " port=" + strconv.Itoa(int(dbmInfo.DB_Port)) + " sslmode=disable TimeZone=Asia/Shanghai" + db_, err = gorm.Open(postgres.Open(dsn), &gorm.Config{}) if err != nil { return nil, err @@ -66,11 +67,11 @@ func GetGORMDBObject(dbmInfo *proto.DBManage) (db_ *gorm.DB, err error) { } dao.DBMMapRWMutex.Lock() - defer dao.DBMMapRWMutex.Unlock() var dbValue *proto.DBValue dbValue.Value = db_ dbValue.LastUserTime = worker.GetCurrentTimestamp() dao.DBMMap[dbmInfo.ID] = dbValue + dao.DBMMapRWMutex.Unlock() return db_, err }