[Gfoss] Spatialite e Qspatialite: Messaggio di Errore sotto Debian Linux - SQL error. Database is locked
a.furieri a lqt.it
a.furieri a lqt.it
Mer 27 Mar 2013 16:54:09 CET
On Wed, 27 Mar 2013 15:30:23 +0100, Luca Mandolesi wrote:
> Salve a tutti, stiamo facendo un corso di Qgis e stiamo provando ad
> utilizzare spatialite.
> Dopo aver creato con successo una tabella, successivamente abbiamo
> provato a crearne una nuova e abbiamo iniziato a ricevere SQL error.
> Database is locked.
>
> Abbiamo provato a chiudere sia QGis che spatialite-gui e anche a
> Riavviare la macchina, ma il database rimane bloccato.
>
Luca,
sinceri rallegramenti; e' la prima volta in assoluto che sento una
roba del genere, direi state esplorando frontiere ancora ignote alla
scienza ufficiale :-)
giusto per curiosita': quali versioni di sqlite / qgis ?
ma soprattuto: su quale sistema operativo ?
N.B.: SQLite non e' minimamente pensato per gestire accessi concorrenti
in scrittura.
detto in soldoni: e' bene che un unico processo alla volta cerchi di
fare
delle operazioni di scrittura. tanto a maggior ragione se le
connessioni
avvengono usando due librerie distinte che appartengono a due diverse
versioni
di SQLite.
quello che e' invece ragionevole e' *leggere* un medesimo DB-file da
parte
di molti processi concomitanti; ma deve trattarsi appunto di pure
operazioni
di lettura senza alcuna scrittura (come ovviamente non e' per una
CREATE TABLE).
insomma, se gli accessi concorrenti sono un prerequisito
indispensabile, usare
sqlite / spatialite e' assolutamente fuori discussione: in questi casi
occorre
evidentemente usare un DBMS client/server come PostgreSQL.
il punto piu' sconcertante e' che il DB-file resti bloccato anche dopo
che
hai riavviato il sistema.
per quanto a mia conoscenza, SQLite si basa per intero sul locking di
sistema,
e quindi evidentemente non puo' lasciare tracce di sorta dopo un
reboot.
quindi ritengo molto piu' probabile che il problema sia piuttosto nel
logfile:
se guardi bene, vedrai che ogni volta che apri in
scrittura/aggiornamento un
DB SQLite nella medesima cartella appare magicamente un logfile che ha
un
nome strettamente analogo a quello del DB-file.
- se lo trovi, prova a cancellarlo manualmente; magari puo' servire a
ripristinare
correttamente il funzionamento del tuo DB (ovviamente perderai le
ultime modifiche).
- se invece non esiste, temo che l'unica spiegazione ragionevole e'
quella di
presumere che una qualche dissennata interazione tra due versioni
contrastanti
della libsqlite abbia finito per danneggiare fisicamente il DB-file.
in questo caso puoi sempre provare ad usare lo strumento analyzer di
SQLite
per avere ulteriori lumi. lo trovi qua:
http://www.sqlite.org/download.html
ciao Sandro
--
Il messaggio e' stato analizzato alla ricerca di virus o
contenuti pericolosi da MailScanner, ed e'
risultato non infetto.
Maggiori informazioni sulla lista
Gfoss