随机异常android.database.sqlite.SQLiteException:无法打开数据库文件

Ran*_*ku' 23 database sqlite android

我的应用程序使用未捕获的异常处理程序,在应用程序崩溃时将堆栈跟踪发送给我.我经常从随机用户那里得到这份报告.

我无法复制它,数据库的打开总是在我的情况下成功.这不是存储在外部SD卡上的数据库,只是打开的数据库SQLiteOpenHelper(context, "SomeName", null, someVersionCode).

你有这方面的经验吗?在打开数据库之前我可以检查哪些可能性?

谢谢!

android.database.sqlite.SQLiteException: unable to open database file
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:4363)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:521)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: android.database.sqlite.SQLiteException: unable to open database file
    at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
    at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1698)
    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:739)
    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:761)
    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:754)
    at android.app.ApplicationContext.openOrCreateDatabase(ApplicationContext.java:476)
    at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:193)
    at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
Run Code Online (Sandbox Code Playgroud)

小智 5

升级我的Android固件后,我得到了同样的错误.数据库是由旧固件创建的,因此无法通过新固件打开.用户可以通过卸载并重新安装您的应用来解决此错误.


Vla*_*roz 2

发生这种情况的可能情况之一是,当您从多个线程访问数据库文件时,以及当您尝试从另一个线程打开该文件进行修改时,该文件被其中一个线程锁定。