¿Cómo desbloqueo una base de datos SQLite?

Resuelto ryantm asked hace 16 años • 38 respuestas

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?

ryantm avatar Sep 30 '08 05:09 ryantm
Aceptado

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á.

noneno avatar Aug 13 '2010 22:08 noneno

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

robert avatar Oct 12 '2011 13:10 robert

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.

converter42 avatar Oct 20 '2008 14:10 converter42

Si desea eliminar el error "la base de datos está bloqueada", siga estos pasos:

  1. Copie el archivo de su base de datos en otra ubicación.
  2. 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.
vinayak jadi avatar Mar 07 '2013 12:03 vinayak jadi