android - Android SQLiteCantOpenDatabaseException
问题描述
SQLite 数据库无法在以下三星设备中打开。在其他设备上它工作正常。
Device name : Samsung A20
OS version : Android 9.0
崩溃发生在第二行。
DatabaseHandler databaseHandler = new DatabaseHandler(context);
database = databaseHandler.getWritableDatabase();
上面提到的DatabaseHandler类扩展了 SQLiteOpenHelper。
以下是日志:
android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 1806 SQLITE_CANTOPEN_EACCES[1806]): Could not open database
at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:284)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:215)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:705)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:272)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:239)
at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:1292)
at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:1247)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:903)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:893)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:355)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:298)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworkSQLiteOpenHelper.java:92)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.java:53)
at androidx.room.RoomDatabase.beginTransaction(RoomDatabase.java:328)
at androidx.work.impl.utils.ForceStopRunnable.cleanUp(ForceStopRunnable.java:135)
at androidx.work.impl.utils.ForceStopRunnable.run(ForceStopRunnable.java:79)
at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
解决方案
推荐阅读
- javascript - 在 reactjs 中想要根据子状态更新父状态?
- node.js - 使用 Nodejs 向 Mongodb Atlas 发出 post 请求
- json - 如何在 Swift 中将类作为参数传递
- r - R - 一个比例多列重新编码
- python - 使用 Office365-REST-Python-Client 创建 SharePoint 列表时,如何在 ListCreationInformation 对象中指定字段列表?
- swift - Siri 和 Swift Speech 是否可以消除噪音?
- sql - 如何使用单个命令执行 2 个 SQLlite 查询
- vue.js - 如何在没有样式属性的情况下触发我的模态组件
- laravel - 合并模型及其与结果的关系,如 laravel 中的连接查询
- java - Selenium Java + Chrome + ModHeader:无法从“Window”读取“localStorage”属性:拒绝访问此文档