From 911d4cb680d88e2ce734978a3e52ff64a2c320b8 Mon Sep 17 00:00:00 2001 From: linxiaotao Date: Thu, 15 Jan 2026 02:36:34 +0000 Subject: [PATCH] fix: SQL Workbench is unable to execute SQL Due to the failure to pass the data source name during the audit, sqled was unable to locate the data source, resulting in an audit error and causing SQL execution to start interrupting at sqle. However, subsequent error messages were not accurately transmitted and logs were not printed, making it difficult to troubleshoot.Temporarily supplement log messages for future troubleshooting. --- .../sql_workbench/service/sql_workbench_service.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/internal/sql_workbench/service/sql_workbench_service.go b/internal/sql_workbench/service/sql_workbench_service.go index e06119de..ecda8d65 100644 --- a/internal/sql_workbench/service/sql_workbench_service.go +++ b/internal/sql_workbench/service/sql_workbench_service.go @@ -1019,6 +1019,7 @@ func (sqlWorkbenchService *SqlWorkbenchService) AuditMiddleware() echo.Middlewar // 读取请求体 bodyBytes, err := io.ReadAll(c.Request().Body) if err != nil { + sqlWorkbenchService.log.Errorf("failed to read request body: %v", err) return fmt.Errorf("failed to read request body: %w", err) } // 恢复请求体,供后续处理使用 @@ -1027,43 +1028,51 @@ func (sqlWorkbenchService *SqlWorkbenchService) AuditMiddleware() echo.Middlewar // 解析请求体获取 SQL 和 datasource ID sql, datasourceID, err := sqlWorkbenchService.parseStreamExecuteRequest(bodyBytes) if err != nil { + sqlWorkbenchService.log.Errorf("failed to parse streamExecute request, skipping audit: %v", err) return fmt.Errorf("failed to parse streamExecute request, skipping audit: %v", err) } if sql == "" || datasourceID == "" { + sqlWorkbenchService.log.Debugf("SQL or datasource ID is empty, skipping audit") return fmt.Errorf("SQL or datasource ID is empty, skipping audit") } // 获取当前用户 ID dmsUserId, err := sqlWorkbenchService.getDMSUserIdFromRequest(c) if err != nil { + sqlWorkbenchService.log.Errorf("failed to get DMS user ID: %v", err) return fmt.Errorf("failed to get DMS user ID: %v", err) } // 从缓存表获取 dms_db_service_id dmsDBServiceID, err := sqlWorkbenchService.getDMSDBServiceIDFromCache(c.Request().Context(), datasourceID, dmsUserId) if err != nil { + sqlWorkbenchService.log.Errorf("failed to get dms_db_service_id from cache: %v", err) return fmt.Errorf("failed to get dms_db_service_id from cache: %v", err) } if dmsDBServiceID == "" { + sqlWorkbenchService.log.Debugf("dms_db_service_id not found in cache for datasource: %s", datasourceID) return fmt.Errorf("dms_db_service_id not found in cache for datasource: %s", datasourceID) } // 获取 DBService 信息 dbService, err := sqlWorkbenchService.dbServiceUsecase.GetDBService(c.Request().Context(), dmsDBServiceID) if err != nil { + sqlWorkbenchService.log.Errorf("failed to get DBService: %v", err) return fmt.Errorf("failed to get DBService: %v", err) } // 检查是否启用 SQL 审核 if !sqlWorkbenchService.isEnableSQLAudit(dbService) { + sqlWorkbenchService.log.Debugf("SQL audit is not enabled for DBService: %s", dmsDBServiceID) return fmt.Errorf("SQL audit is not enabled for DBService: %s", dmsDBServiceID) } // 调用 SQLE 审核接口 auditResult, err := sqlWorkbenchService.callSQLEAudit(c.Request().Context(), sql, dbService) if err != nil { + sqlWorkbenchService.log.Errorf("call SQLE audit failed: %v", err) return fmt.Errorf("call SQLE audit failed: %v", err) } @@ -1225,6 +1234,7 @@ func (sqlWorkbenchService *SqlWorkbenchService) callSQLEAudit(ctx context.Contex SQLContent: sql, SQLType: "sql", ProjectId: dbService.ProjectUID, + InstanceName: dbService.Name, RuleTemplateName: dbService.SQLEConfig.SQLQueryConfig.RuleTemplateName, }