随机例外 android.database.sqlite.SQLiteException: 无法打开数据库文件
我的应用程序使用的是非干扰例外的处理程序,它将堆栈发送给我 trace, 应用程序失败时。 我经常从随机用户收到此报告。
我无法重现它,数据库开放在我的情况下总是成功的。 这不是存储在外部地图上的数据库。 SD, 但只有数据库打开
.
在这件事上有经验吗? 在打开数据库之前,我可以检查哪些机会?
谢!
</init>
我无法重现它,数据库开放在我的情况下总是成功的。 这不是存储在外部地图上的数据库。 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/
</init>
没有找到相关结果
已邀请:
7 个回复
郭文康
赞同来自:
用户可以解决此错误,删除并重新安装应用程序。
诸葛浮云
赞同来自:
董宝中
赞同来自:
请试试 synchronized method to open database.synchronized 该方法不会允许数据库同时从多个流打开。
将下面的代码放在下面 dbHelper
并在获取数据库时调用此方法。
我希望它会有所帮助。
董宝中
赞同来自:
您的情况很难确定确切的原因,而无需看到您创建数据库以及如何使用它。 获得此异常的问题可能是由几个原因引起的。 他人已经提到了一些问题。 我想提一下一件事。 你能试着像这样打开数据库吗?
可能,如果您展示了代码片段,我可以尝试更好地帮助。 好吧,这里描述了我的方法,您可以看出它是否有帮助。
https://coderoad.ru/19263028/
数据 SQLite
二哥
赞同来自:
我遇到了这样的问题,我以这种方式决定了这个问题。
我们需要检查旧巧合
根据
数据S.
新基地
数据 , 如果当时在新数据库中发生了变化,我们需要删除
旧基地
数据和安装
新基地
数据 OR 按照新数据库更改表
第二个选项很简单
消除
老的
应用程序并安装新
希望它会为你工作.. !!!
裸奔
赞同来自:
我的一个应用程序以相同的方式表现,因为我添加了代码以将数据库从资产复制到屏幕保护程序上的指定位置。 /当应用程序启动时可见的屏幕,并在几秒钟后自动关闭。/.
并且在某些情况下发生了什么,此数据库未在指定的时间段内复制,并从应用程序访问它导致异常。
我做了什么,
我只写了一个代码,用于在后台流中复制数据库,并显示用户屏幕保护程序,直到数据库被复制,只有在我显示以下屏幕之后。
如果应用程序安装在以前的版本上,则可能存在另一个解决方案,写下代码将保存的数据从以前版本的应用程序复制到新的 vesrion, 如果需要数据,并且新版本包含其他型号比以前的版本。
董宝中
赞同来自:
并尝试使用同步块
数据库操作 CURD :/