Saltar al contenido

Los ficheros que aparecen al lado

Tu base no es un fichero: son tres. Qué significa cada uno, por qué copiar solo el principal corrompe la copia, y cómo se comprueba la integridad.

Los tres ficheros

Cómo se copia una base

No copiando ficheros. Es la regla, y tiene dos formas correctas:

Y esto conecta con el nivel 39.3: si tu aplicación ofrece exportar los datos del usuario, tiene que usar una de las dos formas buenas. Una exportación que produce bases a las que les faltan los últimos cambios es peor que no tenerla, porque nadie lo nota hasta que hace falta.

Comprobar la integridad

SQLite puede revisarse a sí misma, y merece hacerlo en dos momentos:

Rust
// devuelve "ok" si todo está bien; si no, la lista de problemaslet resultado: String = conn.query_row("PRAGMA integrity_check", [], |f| f.get(0))?;if resultado != "ok" {    // la base está dañada: ver abajo}
  • Al arrancar, no siempre. En una base grande tarda, así que no en cada inicio: una vez a la semana, o tras un cierre inesperado —que puedes detectar con una marca que escribes al cerrar bien y borras al arrancar—.
  • Y siempre que un usuario reporte algo raro. Es la primera pregunta de diagnóstico, y se puede exponer como un botón en una pantalla de diagnóstico.

Si falla, la respuesta no es intentar reparar a mano. Lo que se hace es: avisar al usuario, no escribir nada más en esa base, y ofrecer restaurar desde la última copia — que es la razón por la que la aplicación debería estar haciendo copias, y el motivo de que el nivel 43 insista tanto.

El espacio que no se libera

Un detalle que sorprende: borrar filas no reduce el tamaño del fichero. El espacio queda marcado como libre y se reutiliza, pero la base no encoge.

Para una aplicación de escritorio que acumula durante años, eso importa:

  • Compactar la base es una operación que la reescribe entera y devuelve el espacio. Es lenta y necesita espacio libre equivalente al tamaño de la base mientras dura.
  • No se hace en cada arranque. Se hace ocasionalmente, o a petición del usuario desde una opción de mantenimiento.
  • Y hay un modo automático que va devolviendo espacio poco a poco, que suele ser mejor opción para escritorio porque evita la operación larga.