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:
// 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.