sql >> Databasteknik >  >> RDS >> SQLite

SQLiteReadOnlyDatabaseException:försök att skriva en skrivskyddad databas (kod 1032)

Jag har fastnat med mer eller mindre exakt samma problem och jag hittade en öppen defekt i frågan som är vettig...

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

Min lösning - om än inte den bästa lösningen - är att aldrig stega databasrevisionen och spåra detta själv, och därför aldrig anropa onUpgrade() , och gör en uppgradering manuellt när du uppdaterar appen.

Alternativt, om du har en liten DB som är skrivskyddad, kan du trigga kopian av db i tillgångar på varje onCreate() i DBHelper klass, men detta kan ge oönskade problem om filsystemet är fullt så gör det bara när du letar efter en bättre lösning.

@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());
    }
}

Min app uppgraderas nu som den ska med min lösning och genom att bedöma hur lång tid det är sedan den här defekten uppstod från början kanske den aldrig åtgärdas alls...

Jag är ledsen att detta inte är en fullständig lösning på problemet, men det är åtminstone en väg framåt.



  1. Ett annat sätt att se automatiska uppdateringar av statistik

  2. Uppdatering av databasrader utan att låsa tabellen i PostgreSQL 9.2

  3. Hämta en bild lagrad som BLOB på en MYSQL DB

  4. Hur man hanterar en tabellkolumn med ett reserverat SQL-sökord?