SQLiteReadOnlyDatabaseException: attempt to write a readonly database (code 1032)

当尝试写入只读数据库时遇到SQLiteReadOnlyDatabaseException (code 1032)。临时解决方案是通过chmod 777增加数据库权限,但每次重装应用都需要重新授权。根本解决办法是参考StackOverflow,在DBHelper的onCreate方法中删除旧数据库后再复制,避免只读问题。

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

SQLiteReadOnlyDatabaseException: attempt to write a readonly database (code 1032)
是因为res/raw的文件复制过去之后没有读写的权限

于是我想到了第一种解决方法治标不治本:
我去到app的databases目录下对数据库文件进行加权限
chmod 777 xxx

然后就可以正常运行。
但是这种方法对于每次重装app都需要重新跑一次上面的加权限的流程,比较麻烦。

第二种治本:


原来我是在BaseApplication里面进行复制数据库,但是发现不能写,只可以读,每当插入数据就报上面的错误

后来我参考了stackoverflow后就在DBHelper里面删除后再进行复制,后来就好了
@Override
public void onCreate(SQLiteDatabase db)
{
    mContext.deleteDatabase(DB_NAME);
    getmDb();



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值