# Android APP OCCURS "attempt to write a readonly database"

**URL:** <https://discuss.zetetic.net/t/android-app-occurs-attempt-to-write-a-readonly-database/457>\
**Category:** Issues\
**Created:** [March 11, 2015, 3:21am UTC](https://discuss.zetetic.net/t/android-app-occurs-attempt-to-write-a-readonly-database/457 "2015-03-11T03:21:19Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![weilixin\_tom](https://avatars.discourse-cdn.com/v4/letter/w/f17d59/32.png) [@weilixin\_tom](https://discuss.zetetic.net/u/weilixin_tom)\
**Post date:** [March 11, 2015, 3:21am UTC](https://discuss.zetetic.net/t/android-app-occurs-attempt-to-write-a-readonly-database/457/1 "2015-03-11T03:21:19Z")

</div>

03-10 02:07:56.401: I/Database(19803): sqlite returned: error code = 1032, msg = statement aborts at 60: [UPDATE friends SET third\_uflag=?, second\_uflag=?, first\_uflag=?]  
03-10 02:07:56.401: D/BaiduHi(19839): Thread-3389:HiCore [OFFLINE]: handleWriteDone, wirte 72 bytes, total=23615  
03-10 02:07:56.401: E/Database(19803): Error updating using for friends  
03-10 02:07:56.401: W/System.err(19803): net.sqlcipher.database.SQLiteException: error code 8: attempt to write a readonly database  
03-10 02:07:56.401: W/System.err(19803): at net.sqlcipher.database.SQLiteStatement.native\_execute(Native Method)  
03-10 02:07:56.401: W/System.err(19803): at net.sqlcipher.database.SQLiteStatement.execute(SQLiteStatement.java:58)  
03-10 02:07:56.401: W/System.err(19803): at net.sqlcipher.database.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1795)  
03-10 02:07:56.401: W/System.err(19803): at net.sqlcipher.database.SQLiteDatabase.update(SQLiteDatabase.java:1725)  
03-10 02:07:56.401: W/System.err(19803): at com.baidu.hi.database.FriendsDBUtil.updateFriendsUFlag(FriendsDBUtil.java:466)  
03-10 02:07:56.401: W/System.err(19803): at com.baidu.hi.logic.FriendLogic.updateFriendsUFlag(FriendLogic.java:480)  
03-10 02:07:56.401: W/System.err(19803): at com.baidu.hi.logic.LoginLogic.loginSuccess(LoginLogic.java:592)  
03-10 02:07:56.401: W/System.err(19803): at com.baidu.hi.logic.LoginLogic.doLoginSuccessProcess(LoginLogic.java:1826)  
03-10 02:07:56.401: W/System.err(19803): at com.baidu.hi.logic.SqliteCipherLogic$3.dataTransferCompleted(SqliteCipherLogic.java:309)  
03-10 02:07:56.401: W/System.err(19803): at com.baidu.hi.logic.SqliteCipherLogic.doEncryptedProcess(SqliteCipherLogic.java:204)  
03-10 02:07:56.401: W/System.err(19803): at com.baidu.hi.logic.SqliteCipherLogic.doUserEncryptedProcess(SqliteCipherLogic.java:295)  
03-10 02:07:56.401: W/System.err(19803): at com.baidu.hi.net.NetManager$2$2.run(NetManager.java:624)  
03-10 02:07:56.401: W/System.err(19803): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)  
03-10 02:07:56.401: W/System.err(19803): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)  
03-10 02:07:56.401: W/System.err(19803): at java.lang.Thread.run(Thread.java:841)

---

<div class="post-metadata">

**Author:** ![weilixin\_tom](https://avatars.discourse-cdn.com/v4/letter/w/f17d59/32.png) [@weilixin\_tom](https://discuss.zetetic.net/u/weilixin_tom)\
**Post date:** [March 11, 2015, 3:31am UTC](https://discuss.zetetic.net/t/android-app-occurs-attempt-to-write-a-readonly-database/457/2 "2015-03-11T03:31:46Z")

</div>

We can reproduce it with following steps:  
1.Database Migration to the encrypted version from unencrypted version.  
2.User database will start data migration when login.  
3.Application startup without successful migration for the first time, continue to use the not encrypted database  
4.This time logout and login again completed data migration, access to the encrypted database will appear this crash above.

---

<div class="post-metadata">

**Author:** ![weilixin\_tom](https://avatars.discourse-cdn.com/v4/letter/w/f17d59/32.png) [@weilixin\_tom](https://discuss.zetetic.net/u/weilixin_tom)\
**Post date:** [March 11, 2015, 5:33am UTC](https://discuss.zetetic.net/t/android-app-occurs-attempt-to-write-a-readonly-database/457/3 "2015-03-11T05:33:50Z")

</div>

has been Fixed it!!!

---

<div class="post-metadata">

**Author:** ![meng\_wang](https://avatars.discourse-cdn.com/v4/letter/m/f14d63/32.png) [@meng\_wang](https://discuss.zetetic.net/u/meng_wang)\
**Post date:** [May 22, 2017, 1:28am UTC](https://discuss.zetetic.net/t/android-app-occurs-attempt-to-write-a-readonly-database/457/4 "2017-05-22T01:28:31Z")

</div>

@weilixin_tom how to fix it? Could you give me some tips? Thank you!🙂

---

<div class="post-metadata">

**Author:** ![Bhavik\_Sadiwala](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.zetetic.net/bhavik_sadiwala/32/1441_2.png) [@Bhavik\_Sadiwala](https://discuss.zetetic.net/u/Bhavik_Sadiwala)\
**Post date:** [September 7, 2020, 1:21pm UTC](https://discuss.zetetic.net/t/android-app-occurs-attempt-to-write-a-readonly-database/457/5 "2020-09-07T13:21:52Z")

</div>

I’m facing the same issue, App is crashing after migration is completed and I login again. App is crashing only once. It is working fine after restarting the app.  
Can you please help me, how to fix this crash?  
Thank you in advance.

Error logs: net.sqlcipher.database.SQLiteException: error code 8: attempt to write a readonly database

---

<div class="post-metadata">

**Author:** ![developernotes](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.zetetic.net/developernotes/32/1309_2.png) [@developernotes](https://discuss.zetetic.net/u/developernotes)\
**Post date:** [September 8, 2020, 2:46pm UTC](https://discuss.zetetic.net/t/android-app-occurs-attempt-to-write-a-readonly-database/457/6 "2020-09-08T14:46:52Z")

</div>

Hello @Bhavik_Sadiwala

This may be due to an application integration/usage issue. To attempt to isolate your application logic from the behavior you are seeing it would be helpful to have a separate reproduction case. Would you create a reproduction case within the SQLCipher for Android [test suite](https://github.com/sqlcipher/sqlcipher-android-tests)? We would be happy to review the situation.
