¿Cómo desbloqueo una base de datos SQLite?
Cuando ingreso esta consulta: sqlite> BORRAR DE correos DONDE ( id
= 71);
SQLite devuelve este error:
SQL error: database is locked
¿Cómo desbloqueo la base de datos para que esta consulta funcione?
En Windows, puede probar este programa http://www.nirsoft.net/utils/opened_files_view.html para descubrir que el proceso maneja el archivo db. Intente cerrar ese programa para desbloquear la base de datos.
En Linux y macOS puedes hacer algo similar, por ejemplo, si tu archivo bloqueado es development.db:
$ desarrollo del fusor.db
Este comando mostrará qué proceso está bloqueando el archivo:
> desarrollo.db: 5430
Simplemente mata el proceso...
matar -9 5430
...Y tu base de datos se desbloqueará.
Causé que mi base de datos sqlite se bloqueara al bloquear una aplicación durante una escritura. Así es como lo solucioné:
echo ".dump" | sqlite old.db | sqlite new.db
Tomado de: http://random.kakaopor.hu/how-to-repair-an-sqlite-database
La página SQLite wiki DatabaseIsLocked ofrece una explicación de este mensaje de error. Afirma, en parte, que la fuente de la discordia es interna (al proceso que emite el error). Lo que esta página no explica es cómo SQLite decide que algo en su proceso mantiene un bloqueo y qué condiciones podrían conducir a un falso positivo.
Este código de error ocurre cuando intenta hacer dos cosas incompatibles con una base de datos al mismo tiempo desde la misma conexión de base de datos.
Los cambios relacionados con el bloqueo de archivos se introdujeron en la versión 3 y pueden ser útiles para futuros lectores y se pueden encontrar aquí: Bloqueo de archivos y simultaneidad en SQLite versión 3.
Si desea eliminar el error "la base de datos está bloqueada", siga estos pasos:
- Copie el archivo de su base de datos en otra ubicación.
- Reemplace la base de datos con la base de datos copiada. Esto eliminará la referencia a todos los procesos que accedían a su archivo de base de datos.