Issue: SqlCipher 4.5.4 file is not a database: , while compiling: select count(*) from sqlite_master;

Hello everyone,
In my open source project KeyPass,
I recently released a new version v1.4.29 I am getting this error for some of the users, but i am not able to replicate this.

Exception android.database.sqlite.SQLiteException: file is not a database: , while compiling: select count(*) from sqlite_master;
  at net.sqlcipher.database.SQLiteCompiledSql.native_compile (SQLiteCompiledSql.java)
  at net.sqlcipher.database.SQLiteCompiledSql.compile (SQLiteCompiledSql.java)
  at net.sqlcipher.database.SQLiteCompiledSql.<init> (SQLiteCompiledSql.java)
  at net.sqlcipher.database.SQLiteProgram.<init> (SQLiteProgram.java)
  at net.sqlcipher.database.SQLiteQuery.<init> (SQLiteQuery.java:2)
  at net.sqlcipher.database.SQLiteDirectCursorDriver.query (SQLiteDirectCursorDriver.java:2)
  at net.sqlcipher.database.SQLiteDatabase.rawQueryWithFactory (SQLiteDatabase.java)
  at net.sqlcipher.database.SQLiteDatabase.rawQuery (SQLiteDatabase.java:2)
  at net.sqlcipher.database.SQLiteDatabase.keyDatabase (SQLiteDatabase.java)
  at net.sqlcipher.database.SQLiteDatabase.openDatabaseInternal (SQLiteDatabase.java:1)
  at net.sqlcipher.database.SQLiteDatabase.openDatabase (SQLiteDatabase.java:4)
  at net.sqlcipher.database.SQLiteDatabase.openOrCreateDatabase (SQLiteDatabase.java:9)
  at net.sqlcipher.database.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper.java:2)
  at net.sqlcipher.database.SupportHelper.getWritableDatabase (SupportHelper.java:6)
  at androidx.room.RoomDatabase.inTransaction (RoomDatabase.kt:5)
  at androidx.room.RoomDatabase.assertNotSuspendingTransaction (RoomDatabase.kt:5)
  at com.yogeshpaliyal.common.db.DbDao_Impl.getAllAccountsAscending (DbDao_Impl.java:129)
  at com.yogeshpaliyal.keypass.ui.home.DashboardViewModel$queryUpdated$1.invokeSuspend (DashboardViewModel.kt:129)
  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:9)
  at kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt:97)
  at kotlinx.coroutines.scheduling.TaskImpl.run (Tasks.kt:3)
  at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely (CoroutineScheduler.java:92)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask (CoroutineScheduler.kt:92)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker (CoroutineScheduler.kt:92)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run (CoroutineScheduler.kt:92)

We were not seeing this issue in v1.4.28 but getting in v1.4.29 and there is no changes releated to DB, sqlcipher, room, etc.

Here is the change logs from v1.4.28 → v1.4.29

Here is my SqlCipher file where I am initiating the DB. AppModule.kt

Thanks in advance

1 Like

Hello @YogeshPaliyal - That error indicates that the derived key for a database is unable to encrypt the data. This could indicate, in order of likelihood:

  1. The key material provided to open the database is incorrect
  2. There is a mismatch in encryption settings, e.g. trying to open a version 3 database with SQLCipher 4 without compatibility settings, or custom settings were used.
  3. All or a portion of the database has been corrupted

Agree, but there is no recent changes related to db, can it be because of AGP bump?

1 Like

It is extremely unlikely that it is related to an AGP bump.

If you are able to reproduce the issue, I would suggest extracting an affected database from the android device and testing on the command line.

1 Like

Hi sir my name is satish kumar please my apps open and my S Gallery not Usable please help me open please I request you sir

1 Like

Sgallery my apps error code please help me Sir I request you please open s gallery Apps

1 Like

Hello,

I’m experiencing the same issue when I updated to 1.4.34 today

1 Like

Thank you everyone for the participation, I am able to resolve the Issue it is not due to SqlCipher, sorry for the inconvenience.

1 Like

Hi, please advise how you solved this problem?