diff --git a/frontend/src/pages/QueriesPage.tsx b/frontend/src/pages/QueriesPage.tsx index 6dbd62c..72ac2ce 100644 --- a/frontend/src/pages/QueriesPage.tsx +++ b/frontend/src/pages/QueriesPage.tsx @@ -189,7 +189,8 @@ export default function QueriesPage() { const catLabel: Record = { all: '全部', '表结构': '表结构', '性能分析': '性能分析', '数据统计': '数据统计', '基础查询': '基础查询' }; /* ---- Execute ---- */ - const handleExecute = useCallback(async (page = 1) => { + const handleExecute = useCallback(async (pageArg: number | unknown = 1) => { + const page = typeof pageArg === 'number' && Number.isFinite(pageArg) ? pageArg : 1; if (!sql || !instanceId) { setError('请选择实例并输入查询语句'); return; } if (/\{(?:table|db|collection)\}/.test(sql)) { setError('SQL 中含有未替换的占位符,请先替换或删除'); return; } setExecuting(true); setError(''); setCurrentPage(page); @@ -209,7 +210,9 @@ export default function QueriesPage() { } } catch (e: unknown) { const raw = (e as { response?: { data?: { detail?: string | Array<{ msg: string }> } } })?.response?.data?.detail; - const msg = Array.isArray(raw) ? raw.map(v => v.msg).join('; ') : (raw || '查询失败'); + const msg = Array.isArray(raw) + ? raw.map(v => v.msg).join('; ') + : (typeof raw === 'string' ? raw : raw ? JSON.stringify(raw) : '查询失败'); setError(msg); if (page === 1) { setHistory(prev => [{ id: Date.now(), sql, instance_id: Number(instanceId), database, db_type: dbType, status: 'failed', execution_time_ms: 0, result_preview: msg, created_at: new Date().toISOString(), favorite: false }, ...prev]);