Skip to content

Commit aa4a20b

Browse files
committed
🚨 尝试修复database is locked
1 parent 17435dd commit aa4a20b

3 files changed

Lines changed: 28 additions & 9 deletions

File tree

src/pages/User/Gacha.vue

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,17 @@ async function refreshGachaPool(
669669
gachaDataMap[item.time].push(item.id.toString());
670670
}
671671
}
672-
await TSUserGacha.mergeUIGF(ac.gameUid, uigfList);
672+
try {
673+
await TSUserGacha.mergeUIGF(ac.gameUid, uigfList);
674+
} catch (e) {
675+
const errMsg = TGHttps.getErrMsg(e);
676+
showSnackbar.error(`[${label}] 保存祈愿数据失败:${errMsg}`);
677+
await TGLogger.Error(
678+
`[Gacha][${ac.gameUid}][refreshGachaPool] 保存${label}数据异常:${errMsg}`,
679+
);
680+
await TGLogger.Error(`[Gacha][${ac.gameUid}][refreshGachaPool] ${e}`);
681+
break;
682+
}
673683
if (!force && gachaList.some((i) => i.id.toString() === endId.toString())) break;
674684
reqId = gachaList[gachaList.length - 1].id.toString();
675685
if (force) await new Promise<void>((resolve) => setTimeout(resolve, 1000));

src/plugins/Sqlite/modules/userGacha.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
/**
22
* 用户祈愿模块
3-
* @since Beta v0.10.1
3+
* @since Beta v0.10.2
44
*/
55

66
import showDialog from "@comp/func/dialog.js";
77
import showLoading from "@comp/func/loading.js";
88
import showSnackbar from "@comp/func/snackbar.js";
9+
import TGLogger from "@utils/TGLogger.js";
910
import Database from "@tauri-apps/plugin-sql";
1011
import { getUtc8Time, getWikiBrief, timestampToDate } from "@utils/toolFunc.js";
1112
import { ref, type Ref } from "vue";
@@ -85,7 +86,7 @@ async function insertGachaList(
8586
} catch (e) {
8687
await db.execute("ROLLBACK;");
8788
const msg = String(e);
88-
if (/BUSY|LOCKED|SQLITE_BUSY|SQLITE_LOCKED/i.test(msg)) {
89+
if (/BUSY|LOCKED|SQLITE_BUSY|SQLITE_LOCKED|database is locked/i.test(msg)) {
8990
await showDialog.check(`数据库锁定`, `请刷新页面(F5)后重试操作`);
9091
return;
9192
}
@@ -310,11 +311,19 @@ async function mergeUIGF(
310311
});
311312
}, 1000);
312313
}
313-
const transformed = data.map((g) => transGacha(g));
314-
await insertGachaList(db, uid, transformed, 100, cnt);
315-
if (timer) {
316-
clearInterval(timer);
317-
await showLoading.update(`[100%] 完成`, { timeout: 0 });
314+
try {
315+
const transformed = data.map((g) => transGacha(g));
316+
await insertGachaList(db, uid, transformed, 100, cnt);
317+
} catch (e) {
318+
await TGLogger.Error(`[UserGacha][mergeUIGF] 合并祈愿数据异常`);
319+
await TGLogger.Error(`[UserGacha][mergeUIGF] UID: ${uid}, 数据量: ${data.length}`);
320+
await TGLogger.Error(`[UserGacha][mergeUIGF] ${e}`);
321+
throw e;
322+
} finally {
323+
if (timer) {
324+
clearInterval(timer);
325+
await showLoading.update(`[100%] 完成`, { timeout: 0 });
326+
}
318327
}
319328
}
320329

src/plugins/Sqlite/modules/userGachaB.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ async function insertGachaBList(
8686
} catch (e) {
8787
await db.execute("ROLLBACK;");
8888
const msg = String(e);
89-
if (/BUSY|LOCKED|SQLITE_BUSY|SQLITE_LOCKED/i.test(msg)) {
89+
if (/BUSY|LOCKED|SQLITE_BUSY|SQLITE_LOCKED|database is locked/i.test(msg)) {
9090
await showDialog.check(`数据库锁定`, `请刷新页面(F5)后重试操作`);
9191
return;
9292
}

0 commit comments

Comments
 (0)