androidsqliteoneplustwo

Android One Plus Two: Failed to change locale for db


I am using Sqlite database in one of my Android project. It works fine in all the devices except One Plus Two device.

I am getting exception while trying to open the database. This is the crashlog.

 12-23 19:14:35.235: E/SQLiteLog(3133): (11) database corruption at line 53216 of [9491ba7d73]
12-23 19:14:35.235: E/SQLiteLog(3133): (11) statement aborts at 7: [SELECT locale FROM android_metadata UNION SELECT NULL ORDER BY locale DESC LIMIT 1] 
12-23 19:14:35.237: E/SQLiteDatabase(3133): Failed to open database '/data/data/com.mycompany.myapp/databases/alcochange.sqlite'.
12-23 19:14:35.237: E/SQLiteDatabase(3133): android.database.sqlite.SQLiteException: Failed to change locale for db '/data/data/com.mycompany.myapp/databases/myapp.sqlite' to 'en_US'.

Please click here to see the full crash log

I have seen other questions like that here, I have tried almost every answers, but nothing works. I have tried this and this.

EDIT: The device runs on Oxygen Lollipop.


Solution

  • I can't find the reason why I am having this error, but somehow I have avoided this by doing the following.

    Previously, I had a .sqlite database in the bundle and when the user open our app for the first time, I copied the .sqlite database from the bundle to the correct path.

    But now, I have exported the raw queries from the .sqlite and added it with the bundle as a txt file. Now when the user opens the app for the first time, I will first create an empty .sqlite file in the path and then I read all the .sql queries from the txt file from the bundle and execute them over the .sqlite file in the path.