SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLiteReadOnlyDatabaseException:Versuch, eine schreibgeschützte Datenbank zu schreiben (Code 1032)

Ich stecke mit mehr oder weniger genau dem gleichen Problem fest und habe einen offenen Fehler in der Angelegenheit gefunden, der Sinn macht ...

https://code.google.com/p/android/issues/detail?id=174566

Meine Problemumgehung – wenn auch nicht die beste Lösung – besteht darin, die Datenbankrevision niemals schrittweise durchzuführen und diese selbst zu verfolgen, also niemals onUpgrade() aufzurufen , und führen Sie beim Aktualisieren der App manuell ein Upgrade durch.

Wenn Sie alternativ eine kleine DB haben, die nur gelesen werden kann, können Sie die Kopie der DB in Assets bei jedem onCreate() auslösen im DBHelper Klasse, aber dies könnte zu unerwünschten Problemen führen, wenn das Dateisystem voll ist, also tun Sie dies nur, während Sie nach einer besseren Lösung suchen.

@Override
public void onCreate(SQLiteDatabase db) {
    // Workaround for Issue 174566
    myContext.deleteDatabase(DB_NAME);
    try {
        copyDataBase();
    }
    catch(IOException e) {
        System.out.println("IOException " + e.getLocalizedMessage());
    }
}

Meine App wird jetzt mit meiner Problemumgehung so aktualisiert, wie sie sollte, und wenn man bedenkt, wie lange es her ist, dass dieser Fehler ursprünglich gemeldet wurde, wird er möglicherweise überhaupt nie behoben ...

Es tut mir leid, dass dies keine vollständige Lösung des Problems ist, aber es ist zumindest ein Weg nach vorne.