缺陷 / 高 / 后端服务
electron/services/database.service.ts
DatabaseService.initialize 执行 schema 迁移:
migrations.forEach(migration => { db.exec(migration.sql); db.prepare('INSERT INTO schema_migrations ...').run(...); });
每个 migration 单独执行,未包裹在事务中。若 migration SQL 部分失败(如 ALTER TABLE 成功,CREATE INDEX 失败):
migrations.forEach(migration => { const txn = db.transaction(() => { db.exec(migration.sql); db.prepare('INSERT INTO schema_migrations ...').run(...); }); txn(); // 原子执行 }); // 整个迁移批次也包裹在外层事务中 const runAllMigrations = db.transaction(() => { migrations.forEach(m => runMigration(m)); }); runAllMigrations();
better-sqlite3 的事务是同步原子的,保证一致性。
No dependencies set.
The note is not visible to the blocked user.
问题类型
缺陷 / 高 / 后端服务
文件位置
electron/services/database.service.ts问题描述
DatabaseService.initialize 执行 schema 迁移:
每个 migration 单独执行,未包裹在事务中。若 migration SQL 部分失败(如 ALTER TABLE 成功,CREATE INDEX 失败):
影响
建议修复
better-sqlite3 的事务是同步原子的,保证一致性。