diff --git a/electron/services/wcdbCore.ts b/electron/services/wcdbCore.ts index 4f0d97b..b5d039b 100644 --- a/electron/services/wcdbCore.ts +++ b/electron/services/wcdbCore.ts @@ -2681,7 +2681,7 @@ export class WcdbCore { } try { const outCursor = [0] - const result = this.wcdbOpenMessageCursorLite( + let result = this.wcdbOpenMessageCursorLite( this.handle, sessionId, batchSize, @@ -2690,6 +2690,29 @@ export class WcdbCore { endTimestamp, outCursor ) + + // result=-3 表示 WCDB_STATUS_NO_MESSAGE_DB:消息数据库缓存为空 + // 自动强制重连并重试一次 + if (result === -3 && outCursor[0] <= 0) { + this.writeLog('openMessageCursorLite: result=-3 (no message db), attempting forceReopen...', true) + const reopened = await this.forceReopen() + if (reopened && this.handle !== null) { + outCursor[0] = 0 + result = this.wcdbOpenMessageCursorLite( + this.handle, + sessionId, + batchSize, + ascending ? 1 : 0, + beginTimestamp, + endTimestamp, + outCursor + ) + this.writeLog(`openMessageCursorLite retry after forceReopen: result=${result} cursor=${outCursor[0]}`, true) + } else { + this.writeLog('openMessageCursorLite forceReopen failed, giving up', true) + } + } + if (result !== 0 || outCursor[0] <= 0) { await this.printLogs(true) this.writeLog( diff --git a/resources/arm64/wcdb_api.dll b/resources/arm64/wcdb_api.dll index 0f8144f..de6bce8 100644 Binary files a/resources/arm64/wcdb_api.dll and b/resources/arm64/wcdb_api.dll differ diff --git a/resources/libwcdb_api.dylib b/resources/libwcdb_api.dylib index eeea432..d185cfc 100755 Binary files a/resources/libwcdb_api.dylib and b/resources/libwcdb_api.dylib differ diff --git a/resources/libwcdb_api.so b/resources/libwcdb_api.so index 7b2a957..d3c686a 100755 Binary files a/resources/libwcdb_api.so and b/resources/libwcdb_api.so differ diff --git a/resources/linux/libwcdb_api.so b/resources/linux/libwcdb_api.so index 7b2a957..d3c686a 100755 Binary files a/resources/linux/libwcdb_api.so and b/resources/linux/libwcdb_api.so differ diff --git a/resources/macos/libwcdb_api.dylib b/resources/macos/libwcdb_api.dylib index eeea432..d185cfc 100755 Binary files a/resources/macos/libwcdb_api.dylib and b/resources/macos/libwcdb_api.dylib differ diff --git a/resources/wcdb_api.dll b/resources/wcdb_api.dll index 9cae2bd..c9609ad 100644 Binary files a/resources/wcdb_api.dll and b/resources/wcdb_api.dll differ diff --git a/resources/wcdb_api_arm64.dll b/resources/wcdb_api_arm64.dll index 0f8144f..de6bce8 100644 Binary files a/resources/wcdb_api_arm64.dll and b/resources/wcdb_api_arm64.dll differ