¿Cuáles son las extensiones .db-shm y .db-wal en las bases de datos Sqlite?

Estoy viendo un comportamiento extraño con mi aplicación y el estado de su archivo de base de datos después de ejecutar algunas pruebas que cierran la base de datos, lo borran y lo reemplazan con un dispositivo de prueba. Cuando examino el archivo de base de datos con una herramienta en mi PC de depuración, no coincide con lo que la aplicación en sí parece estar informando. Es posible que este comportamiento extraño esté relacionado con este error .

Me di cuenta de que hay dos archivos con el mismo nombre de base que la base de datos (con la extensión normal .db ). Las extensiones de archivo son .db-shm y .db-wal , y cada una es más reciente que la de timestamp del archivo .db .

Supongo que estos son algunos tipos de archivos temporales. Sin embargo, me pregunto si la aplicación se termina, no deberían ser eliminados? Más importante aún, asumo que los datos almacenados en ellos se actualizan dentro del archivo .db antes de que la aplicación termine con el sistema operativo. ¿Es esto correcto?

Usted es correcto, estos son archivos temporales creados por SQLite. Si está borrando manualmente el db principal, probablemente debería eliminarlos también. Por lo que puedo recopilar, el WAL es un reemplazo para el diario de reversión que permite a SQLite anular los cambios cuando falla una transacción. ¿Cómo SQLite los utiliza y por qué se mantienen alrededor durante tanto tiempo depende de los autores de SQLite, pero en general SQLite parece bastante sólida roca, así que no me preocuparía demasiado sobre ellos. Para más información echa un vistazo aquí:

http://www.sqlite.org/fileformat2.html#walindexformat

Estos archivos son una nueva característica de SQLite 3.7. No estoy seguro de si su existencia se relaciona con el error que usted señala, pero el informe de errores sugiere un trabajo de todos modos.

  • Android: SQLite usando base de datos incorrecta
  • Prácticas recomendadas para exponer varias tablas mediante proveedores de contenido en Android
  • ¿Cómo puedo mantener mi base de datos en una tarjeta SD y utilizar ORMLite?
  • Sincronizar SQLite DB en la aplicación android con el DB remoto de MySQL
  • ¿Cómo puedo extraer la base de datos sqlite desde el dispositivo Android?
  • SQLite rawQuery campos de selecciónArgs y enteros
  • Recyclerview + Proveedor de contenido + CursorLoader
  • RawQuery (consulta, selecciónArgs)
  • Cómo crear sqlite declaración preparada en OrmLite?
  • Cursor finalizado sin cerrar antes () Android
  • Android: ¿Dónde se almacenan los archivos de base de datos?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.