android 数据库只读,部分Android机型上出现:attempt to write a readonly database

在将ORMLite项目从SQLCipher迁移到WCDB后,遇到一个错误:尝试在只读数据库上写入。该错误在执行删除操作时触发,源于SQLiteReadOnlyDatabaseException。错误堆栈跟踪涉及了SQLiteConnection、SQLiteSession和SQLiteStatement等组件,可能的原因是数据库权限配置不正确或者事务处理不当。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用了ormlite和wcdb,把https://github.com/Andoctorey/ormlite-sqlcipher 改到wcdb,然后开启事务调用dao的delete就报错了,原来没问题的

Caused by: com.tencent.wcdb.database.SQLiteReadOnlyDatabaseException: attempt to write a readonly database (code 1032, errno 0): at com.tencent.wcdb.database.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method) at com.tencent.wcdb.database.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:780) at com.tencent.wcdb.database.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:706) at com.tencent.wcdb.database.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:62) at com.tencent.wcdb.database.SQLiteDatabase.executeSql(SQLiteDatabase.java:1883) at com.tencent.wcdb.database.SQLiteDatabase.execSQL(SQLiteDatabase.java:1862) at com.j256.ormlite.android.AndroidCipherCompiledStatement.execSql(AndroidCipherCompiledStatement.java:214) at com.j256.ormlite.android.AndroidCipherCompiledStatement.runUpdate(AndroidCipherCompiledStatement.java:86) at com.j256.ormlite.stmt.StatementExecutor.delete(StatementExecutor.java:582) at com.j256.ormlite.dao.BaseDaoImpl.delete(BaseDaoImpl.java:531) at com.j256.ormlite.stmt.DeleteBuilder.delete(DeleteBuilder.java:40)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值