Jearil / SimpleNoSQL

A simple NoSQL client for Android. Meant as a document store using key/value pairs and some rudimentary querying. Useful for avoiding the hassle of SQL code.
387 stars 53 forks source link

SQLiteDatabaseCorruptException: file is encrypted or is not a database (code 26) #41

Open peshkira opened 5 years ago

peshkira commented 5 years ago

In certain cases I get reports of the following error, however, I am unable to reproduce it reliably right now. I am not sure if it has to do directly with this library, but I am using it in my project. I do not have file encryption.

Does this happen for someone else as well, by any chance. Do you have a clue, of it is caused by the library, or if it is an error of SQLLite or the android file system.

According to this: https://sqlite.org/rescode.html#notadb the db file was not existing, which shouldn't be the case.

2018-11-19 10:48:30.751 12786-12859/? E/AndroidRuntime: FATAL EXCEPTION: Thread-13
    Process: com.myapp.example, PID: 12786
    android.database.sqlite.SQLiteDatabaseCorruptException: file is encrypted or is not a database (code 26)
        at android.database.sqlite.SQLiteConnection.nativeExecuteForLong(Native Method)
        at android.database.sqlite.SQLiteConnection.executeForLong(SQLiteConnection.java:599)
        at android.database.sqlite.SQLiteSession.executeForLong(SQLiteSession.java:652)
        at android.database.sqlite.SQLiteStatement.simpleQueryForLong(SQLiteStatement.java:107)
        at android.database.DatabaseUtils.longForQuery(DatabaseUtils.java:842)
        at android.database.DatabaseUtils.longForQuery(DatabaseUtils.java:830)
        at android.database.sqlite.SQLiteDatabase.getVersion(SQLiteDatabase.java:940)
        at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:311)
        at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:262)
        at com.colintmiller.simplenosql.db.SimpleNoSQLDBHelper.getEntities(SimpleNoSQLDBHelper.java:116)
        at com.colintmiller.simplenosql.db.SimpleNoSQLDBHelper.getEntities(SimpleNoSQLDBHelper.java:107)
        at com.colintmiller.simplenosql.threading.DataDispatcher.retrieve(DataDispatcher.java:121)
        at com.colintmiller.simplenosql.threading.DataDispatcher.run(DataDispatcher.java:83)
Jearil commented 5 years ago

I've not seen that. Is it on a device or emulator? Does it happen in the wild or are you just locally testing? The system should automatically create a DB file when first running.

peshkira commented 5 years ago

This was on a real device. Nexus 5X with Android 8.1.0 afaik. This report happened during testing in our team. We are not yet sure, if it happens in the wild.

When you say "the system", you mean Android itself should create the DB, right? Could it have something to do with file system permissions and FileProviders? Although, I believe, this shouldn't be the case.