fix: Redis查询核心bug修复 — 命令拆分+HGETALL结构化+DB号+插入换行

1. executeRedisQuery: client.Do()没传命令名导致ERR unknown command
2. HGETALL结果用reflect处理map类型,结构化输出field/value表格
3. 支持指定Redis DB号(之前固定DB=0)
4. 前端Redis命令插入用换行分隔,MySQL保持空格
5. cost_ms到execution_time_ms字段映射修复
This commit is contained in:
logan committed 2026-05-28 14:53:12 +08:00
1 parent 6b5d8bede4
commit 828a0597c5
2 files changed
+97 -17

No files matched your search

+9 -5
View File
@@ -210,13 +210,14 @@ export default function QueriesPage() {
setExecuting(true); setError(''); setResult(null);
try {
const res = await queryApi.execute({ instance_id: Number(instanceId), database: database || undefined, sql }) as unknown as QueryResult;
if (res.error) {
setError(res.error);
const normalized = { ...res, execution_time_ms: res.execution_time_ms || res.cost_ms || 0 };
if (normalized.error) {
setError(normalized.error);
setResult(null);
} else {
setResult(res);
setResult(normalized);
}
setHistory(prev => [{ id: Date.now(), sql, instance_id: Number(instanceId), database, db_type: dbType, status: 'success', execution_time_ms: res.execution_time_ms || 0, result_preview: JSON.stringify(res.rows?.[0] || {}).substring(0, 100), created_at: new Date().toISOString(), favorite: false }, ...prev]);
setHistory(prev => [{ id: Date.now(), sql, instance_id: Number(instanceId), database, db_type: dbType, status: 'success', execution_time_ms: normalized.execution_time_ms, result_preview: JSON.stringify(normalized.rows?.[0] || {}).substring(0, 100), created_at: new Date().toISOString(), favorite: false }, ...prev]);
} 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 || '查询失败');
@@ -394,7 +395,10 @@ export default function QueriesPage() {
{showSidebar && instanceId && (
<div className="w-[280px] shrink-0">
<SchemaSidebar instanceId={instanceId} database={database} dbType={dbType}
onInsert={(text) => setSql(prev => prev + (prev.trim() ? ' ' : '') + text + ' ')} />
onInsert={(text) => {
const sep = dbType === 'redis' ? (sql.trim() ? '\n' : '') : (sql.trim() ? ' ' : '');
setSql(prev => prev + sep + text + (dbType === 'redis' ? '' : ' '));
}} />
</div>
)}