La base de datos SQLite de Android está bloqueada
Tengo un servicio atado que funciona con varios hilos que leen y escriben en una base de datos de SQLite. Creo una instancia de mi ayudante de base de datos y obtener una conexión a la base de datos en el onCreate de mi servicio, que debe ejecutarse en el hilo principal. Como es un servicio enlazado, sólo debe haber una instancia del servicio en la memoria. Sin embargo, todavía obtener excepciones ocasionalmente cuando el servicio intenta abrir la base de datos o cuando uno de los hilos intenta ejecutar una sentencia.
Código de servicio:
- Eliminar varias filas de contentprovider
- Configuración de Proguard para enlaces sqlite android
- SQLiteOpenHelper "onCreate" no se llama? (El DB no existe)
- java.lang.NullPointerException error en una consulta
- ¿Cómo obtener un cursor con valores distintos solamente?
@Override public void onCreate() { super.onCreate(); MyDatabaseHelper helper = new MyDatabaseHelper(this); database = helper.getWritableDatabase(); }
Excepciones:
java.lang.RuntimeException: Unable to create service uk.co.example.service.MyService: android.database.sqlite.SQLiteException: unable to open database file at android.app.ActivityThread.handleCreateService(ActivityThread.java:1959) at android.app.ActivityThread.access$2500(ActivityThread.java:117) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:989) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:123) at android.app.ActivityThread.main(ActivityThread.java:3691) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) at dalvik.system.NativeStart.main(Native Method) Caused by: android.database.sqlite.SQLiteException: unable to open database file at android.database.sqlite.SQLiteDatabase.dbopen(Native Method) at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1960) at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:887) at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:965) at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:958) at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:585) at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203) at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118) at uk.co.example.service.MyService.onCreate(MyService.java:69) at android.app.ActivityThread.handleCreateService(ActivityThread.java:1949) ... 10 more android.database.sqlite.SQLiteException: error code 5: database is locked at android.database.sqlite.SQLiteStatement.native_execute(Native Method) at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:61) at uk.co.example.aaaa(MyTable.java:147) at uk.co.example.service.bamrun(MySaveTask.java:84) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) at java.lang.Thread.run(Thread.java:1019)
¿Alguna idea de que puede estar causando esto?
Gracias
David
- Cómo implementar la función recursiva de sqlite3 en dispositivos Android
- Pregunta de Android SQlite OnUpgrade
- Alterar el campo único de la tabla
- ¿Cómo agregar dos nuevas columnas a la base de datos SQLite de Android?
- SQLite Excepción no hay columna al intentar seleccionar
- Compartir base de datos sqlite entre varias actividades de Android
- ABORTO: HEAP MEMORY CORRUPTION en NDK env. (Biblioteca POCO, Sqlite3, Cocos2dx)
- Android: ¿Cómo acceder a una sola base de datos de múltiples actividades en la aplicación?
Sqlite ahora soporta un nuevo modo de diario llamado Escritura-Ahead Logging, que es adecuado para el acceso concurrente a sqlite. puede que desee echar un vistazo a http://www.sqlite.org/wal.html .
- ¿Cómo transmitir vídeo directamente entre dvr (servidor) y el teléfono móvil con android (cliente)?
- forma androide con un fondo repetido