2015-12-23 11 views
11

Sto utilizzando il database Sqlite in uno dei miei progetti Android. Funziona bene in tutti i dispositivi eccetto il dispositivo One Plus Two.Android One Plus Two: Impossibile cambiare la locale per db

Ricevo un'eccezione durante il tentativo di aprire il database. Questo è il crashlog.

12-23 19:14:35.235: E/SQLiteLog(3133): (11) database corruption at line 53216 of [9491ba7d73] 
12-23 19:14:35.235: E/SQLiteLog(3133): (11) statement aborts at 7: [SELECT locale FROM android_metadata UNION SELECT NULL ORDER BY locale DESC LIMIT 1] 
12-23 19:14:35.237: E/SQLiteDatabase(3133): Failed to open database '/data/data/com.zanec.dryjanuary/databases/alcochange.sqlite'. 
12-23 19:14:35.237: E/SQLiteDatabase(3133): android.database.sqlite.SQLiteException: Failed to change locale for db '/data/data/com.zanec.dryjanuary/databases/alcochange.sqlite' to 'en_US'. 

prega click here per vedere il log completo crollo

ho visto le altre domande del genere qui, ho provato quasi tutte le risposte, ma non funziona niente. Ho provato this e this.

MODIFICA: Il dispositivo funziona su Oxygen Lollipop.

+0

Il modello del dispositivo non ci dice supporto, firmware, rom ecc. È molto più utile in quanto i dispositivi OnePlus generalmente eseguono molte configurazioni diverse. –

+0

Questo percorso '/data/data/com.zanec.dryjanuary/databases/alcochange.sqlite/' non esiste. Controllare 'context.getDatabasePath (/data/data/com.zanec.dryjanuary/databases/alcochange.sqlite/)' che restituisce il tipo 'File'. –

+0

Hai una riga 'E/SQLiteDatabase (6278): causata da: ???' nel tuo crashlog? – naXa

risposta

1

Non riesco a trovare il motivo per cui sto avendo questo errore, ma in qualche modo ho evitato questo facendo quanto segue.

In precedenza, avevo un database .sqlite nel pacchetto e quando l'utente ha aperto la nostra app per la prima volta, ho copiato il database .sqlite dal pacchetto nel percorso corretto.

Ma ora ho esportato le query non elaborate da .sqlite e l'ho aggiunto con il pacchetto come file txt. Ora, quando l'utente apre l'app per la prima volta, creerò prima un file .sqlite vuoto nel percorso e poi leggerò tutte le query .sql dal file txt dal pacchetto ed eseguirle sul file .sqlite nel sentiero.

0

Provare a modificare la locale manualmente.

Aprire il file di database con un editor SQLite come SQLiteStudio, quindi aprire la tabella android_metadata. se non esiste, crearlo. (È possibile creare con l'editor di query (Strumenti> editor di query aperto) e copia/incolla il codice DDL di seguito)

CREATE TABLE android_metadata ( 
    locale TEXT 
); 

per inserire il record è possibile copiare/incollare questa linea nell'editor di query:

Suggerimento: per eseguire la query in SQLiteStudio, è necessario premere il pulsante con l'icona lightning nella barra degli strumenti.

+0

Ho provato che, non funzionava. –

Problemi correlati