sql >> Database teknologi >  >> RDS >> SQLite

SQLiteReadOnlyDatabaseException:forsøg på at skrive en skrivebeskyttet database (kode 1032)

Jeg sidder fast med mere eller mindre nøjagtig det samme problem, og jeg fandt en åben defekt i sagen, der giver mening...

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

Min løsning - omend ikke den bedste løsning - er aldrig at trinvise databaserevisionen og spore dette selv, og dermed aldrig kalde onUpgrade() , og lav en opgradering manuelt, når du opdaterer appen.

Alternativt, hvis du har en lille DB, som er skrivebeskyttet, kan du udløse kopien af ​​db'en i aktiver på hver onCreate() i DBHelper klasse, men dette kan give uønskede problemer, hvis filsystemet er fuldt, så gør kun dette, mens du leder efter en bedre 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 opgraderer nu, som den skal med min løsning, og ved at bedømme, hvor lang tid det er siden denne defekt oprindeligt blev rejst, bliver den måske aldrig rettet...

Jeg beklager, at dette ikke er en fuldstændig løsning på problemet, men det er i det mindste en vej frem.



  1. Sådan opsætter du destinationskatalog for arkivlog i Oracle-databasen

  2. Hvad er Check Constraint i SQL Server - SQL Server / TSQL Tutorial Del 82

  3. Erklæring og indstilling af variabler i en udvalgt erklæring

  4. Sådan sikrer du MySQL:Del 1