diff --git a/electron/main/database/core.ts b/electron/main/database/core.ts index 2bf4d83..4caf840 100644 --- a/electron/main/database/core.ts +++ b/electron/main/database/core.ts @@ -411,6 +411,15 @@ export function checkMigrationNeeded(): { const db = new Database(dbPath, { readonly: true }) db.pragma('journal_mode = WAL') + // 仅迁移聊天会话数据库,跳过其他业务库(如 AI 会话索引库) + const tables = db.prepare("SELECT name FROM sqlite_master WHERE type='table'").all() as Array<{ name: string }> + const tableSet = new Set(tables.map((t) => t.name)) + const isChatSessionDb = tableSet.has('meta') && tableSet.has('member') && tableSet.has('message') + if (!isChatSessionDb) { + db.close() + continue + } + // 获取当前 schema_version const metaTableInfo = db.prepare('PRAGMA table_info(meta)').all() as Array<{ name: string }> const hasVersionColumn = metaTableInfo.some((col) => col.name === 'schema_version') diff --git a/electron/main/worker/query/basic.ts b/electron/main/worker/query/basic.ts index bd95af7..b2bc63d 100644 --- a/electron/main/worker/query/basic.ts +++ b/electron/main/worker/query/basic.ts @@ -489,6 +489,22 @@ export function getAllSessions(): any[] { const db = new Database(dbPath) db.pragma('journal_mode = WAL') + // 跳过非聊天会话数据库(例如内部索引库) + const hasChatMeta = db + .prepare("SELECT 1 as ok FROM sqlite_master WHERE type='table' AND name='meta' LIMIT 1") + .get() as { ok: number } | undefined + const hasMemberTable = db + .prepare("SELECT 1 as ok FROM sqlite_master WHERE type='table' AND name='member' LIMIT 1") + .get() as { ok: number } | undefined + const hasMessageTable = db + .prepare("SELECT 1 as ok FROM sqlite_master WHERE type='table' AND name='message' LIMIT 1") + .get() as { ok: number } | undefined + + if (!hasChatMeta || !hasMemberTable || !hasMessageTable) { + db.close() + continue + } + const meta = db.prepare('SELECT * FROM meta LIMIT 1').get() as DbMeta | undefined if (meta) {