Android.database.sqlite.SQLiteException: Datei ist keine Datenbank: , beim Kompilieren: select count(*) from sqlite_mastAndroid

Forum für diejenigen, die für Android programmieren
Guest
 Android.database.sqlite.SQLiteException: Datei ist keine Datenbank: , beim Kompilieren: select count(*) from sqlite_mast

Post by Guest »

Ich arbeite mit SQLCipher, um meine Datenbank in meiner Android-App zu verschlüsseln, stehe aber vor einem Problem, bei dem ich die Datenbank nicht mit der richtigen Passphrase öffnen kann. Wenn ich versuche, die Datenbank abzufragen, stoße ich auf die folgende Ausnahme:

Code: Select all

android.database.sqlite.SQLiteException: file is not a database: , while compiling: select count(*) from sqlite_master;
Szenario:
Ich pushe ein Update für eine vorhandene App. Wenn der Benutzer versucht, die App zu aktualisieren und zu installieren, stürzt sie sofort nach dem Start ab.
Hier ist der relevante Codeausschnitt, den ich zum Öffnen der Datenbank verwende:

Code: Select all

val passphrase: ByteArray = SQLiteDatabase.getBytes(pw.toCharArray())
val factory = SupportFactory(passphrase)
val db = Room.databaseBuilder(application, AppDatabase::class.java, "TEMPDB")
.openHelperFactory(factory)
.build()

Datenbank-Setup:
  • Ich verwende SQLCipher zur Verschlüsselung.
  • Die Datenbankversion ist 4 (databaseVersion = 4).
  • Beim Debuggen habe ich bestätigt, dass die Passphrase korrekt ist.

    Schritte, die ich bereits getan habe Aufgenommen:
  • Ich habe PRAGMA cipher_migrate hinzugefügt; aber es stürzt immer noch ab.
  • Ich habe versucht, die Datenbank auf dem Gerät mit dem Gerätedatei-Explorer zu überprüfen, aber ich erhalte die gleiche Fehlermeldung.
  • Das habe ich überprüft, ob die Datenbankdatei unter /data/data/YOUR_PACKAGE_NAME/databases/ vorhanden ist.
  • Ich habe versucht, mit verschiedenen Versionen von SQLCipher zu testen, aber ohne Erfolg.
    < /ul>
    Mein Umgebung:
  • SQLCipher-Version: 4.x
  • AGP-Version: 8.x.x
    Android SDK: SDK 35
  • Raumdatenbank mit SQLCipher
  • Öffnen der Datenbank im DB Browser für SQLite mit derselben Passphrase (funktioniert auf einer niedrigeren Version von SQLCipher in Ordnung).
  • Stellen Sie sicher, dass die Passphrase korrekt ist, indem Sie sie in der App protokollieren (storeHelper.getStoreValue()).
  • Versuch Migrieren Sie das Datenbankformat, es tritt jedoch immer noch der gleiche Fehler auf.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post