You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

少量Android设备数据库升级时抛出无信息SQLiteException求助

安卓SQLite数据库升级异常问题

生产环境中少量设备升级数据库时抛出SQLiteException,本地无法复现,约10%的活跃设备受影响:

升级前表结构

CREATE TABLE "UPDATE_CHECK_ENTITY" (_id INTEGER PRIMARY KEY,LICENSE_TOKEN TEXT,RELEASE_NOTE TEXT,VERSION TEXT,URL_TO_APK TEXT,URL_TO_RELEASE_NOTE TEXT);

INSERT INTO UPDATE_CHECK_ENTITY(LICENSE_TOKEN,URL_TO_APK,URL_TO_RELEASE_NOTE,_id,RELEASE_NOTE,VERSION) VALUES (?,?,?,?,?,?);

新增APK_SHA256字段的升级脚本

ALTER TABLE "UPDATE_CHECK_ENTITY" RENAME TO "UPDATE_CHECK_ENTITY_OLD";

CREATE TABLE "UPDATE_CHECK_ENTITY" (_id INTEGER PRIMARY KEY,LICENSE_TOKEN TEXT,RELEASE_NOTE TEXT,VERSION TEXT,URL_TO_APK TEXT,APK_SHA256 TEXT,URL_TO_RELEASE_NOTE TEXT);

INSERT INTO "UPDATE_CHECK_ENTITY" ("_id","LICENSE_TOKEN","RELEASE_NOTE","VERSION","URL_TO_APK","URL_TO_RELEASE_NOTE") SELECT "UPDATE_CHECK_ENTITY_OLD"."_id","UPDATE_CHECK_ENTITY_OLD"."LICENSE_TOKEN","UPDATE_CHECK_ENTITY_OLD"."RELEASE_NOTE","UPDATE_CHECK_ENTITY_OLD"."VERSION","UPDATE_CHECK_ENTITY_OLD"."URL_TO_APK","UPDATE_CHECK_ENTITY_OLD"."URL_TO_RELEASE_NOTE" FROM "UPDATE_CHECK_ENTITY_OLD";

DROP TABLE "UPDATE_CHECK_ENTITY_OLD";

异常堆栈信息

java.lang.RuntimeException: 
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3654)
  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3806)
  at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:83)
  at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:95)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2267)
  at android.os.Handler.dispatchMessage (Handler.java:107)
  at android.os.Looper.loop (Looper.java:237)
  at android.app.ActivityThread.main (ActivityThread.java:8167)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:496)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1100)
Caused by: android.database.sqlite.SQLiteException: 
  at android.database.sqlite.SQLiteConnection.nativePrepareStatement (Native Method)
  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement (SQLiteConnection.java:1372)
  at android.database.sqlite.SQLiteConnection.prepare (SQLiteConnection.java:811)
  at android.database.sqlite.SQLiteSession.prepare (SQLiteSession.java:590)
  at android.database.sqlite.SQLiteProgram.<init> (SQLiteProgram.java:62)
  at android.database.sqlite.SQLiteStatement.<init> (SQLiteStatement.java:33)
  at android.database.sqlite.SQLiteDatabase.executeSql (SQLiteDatabase.java:2329)
  at android.database.sqlite.SQLiteDatabase.execSQL (SQLiteDatabase.java:2257)
  at org.cryptomator.data.db.Sql$SqlInsertSelectBuilder.executeOn (Sql.java:293)

已确认的排查信息

  • 新UPDATE_CHECK_ENTITY表可正常创建
  • 异常在执行INSERT语句时抛出
  • 升级前不存在UPDATE_CHECK_ENTITY_OLD表
  • 部分用户反馈重装应用可解决问题,但重装后仍会执行该数据库升级逻辑,暂未定位问题根源

内容的提问来源于stack exchange,提问作者Jules

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 19:45:02