Seite 1 von 1

SQLite-Fehler: "database is locked"

Verfasst: Dienstag 14. März 2006, 17:21
von jens
Ich erhalte neuerdings den Fehler "database is locked" mit SQLite... Was kann das sein?

Verfasst: Dienstag 14. März 2006, 17:31
von tabellar
Mehrere Möglichkeiten:

> Wenn Du mit dem SQLite Database Browser die SQLite DB bearbeitet und
diese DB-Manipulation nocht nicht gespeichert hast, dann ist die DB noch
gesperrt. Oder mit einem anderen DB-Tool ...

> Wenn Du nicht sauber Deine DB-Connections öffnest und schliesst. Da SQLite eben keine DB Server ist, muss man da sehr sauber programmieren. D.h. mann muss immer genaus wissen, wie der DB Zugriff der App erfolgt :wink: .

Tabellar

Verfasst: Dienstag 14. März 2006, 18:01
von jens
Also das erste kann ich Ausschliessen... Beim zweiten kann es aber duchaus vorkommen... Ich weiß nur nicht, wie ich das ändern kann :(

Das ganze kann passieren, wenn der Client einen Download startet (der mal locker 15-30Min dauern kann)
Wenn nun der Client abbricht, wird auch IMHO das CGI-Skript einfach abgebrochen, ohne das ich die Chance hab, ein db.close() zu machen... Ich glaube das macht Apache einfach so :(

Hm... Vielleicht kann ich allerdings mit [urlhttp://wiki.python.de/Neue_Tricks?#Atexit]atexit[/url] machen...

Naja, vielleicht sollte ich dann doch besser MySQL nehmen...

Verfasst: Dienstag 14. März 2006, 18:17
von tabellar
Auf die Schelle vielleicht folgende Idee:

SQLite DBs sind ja im Prinzip Dateien. Also könntest Du ja für jeden
Download eine neue, temporäre SQLite DB erstellen (geht ja schnell :wink:).

Ein DB Handler könnte dann dann zyklisch prüfen (>zentrale Download Tabelle, mit dem Download DB Name...), ob der Download erfolgreich war (Flag in der Download-DB). Wenn ja, merged er die Datei (?) in die zentrale
FileDB... :wink:

Tabellar

Verfasst: Dienstag 14. März 2006, 19:13
von tabellar
tabellar hat geschrieben:...Ein DB Handler könnte dann dann zyklisch prüfen (>zentrale Download Tabelle, mit dem Download DB Name...), ob der Download erfolgreich war (Flag in der Download-DB). Wenn ja, merged er die Datei (?) in die zentrale FileDB... :wink:
Uups, da hab ich wohl upload mit download verwechselt... :oops: Für den
Download könnte ja das BLOB als Temporäre Datei abgelegt und somit
unabhängig vom DB Zugriff downgeloaded werden...
jens hat geschrieben:Naja, vielleicht sollte ich dann doch besser MySQL nehmen...
Warum nicht PostgreSQL :P ? Als Pythonianer ist PostgreSQL doch ideal,
da Python auch als prozedurale, serverseitige Sprache verwendet werden
kann (PL/Python) :wink:.

Tabellar

Verfasst: Dienstag 14. März 2006, 19:22
von jens
Ich glaube ich verwechsel auch im meinem Falle Upload/Download... Also mein PyDown-Skript sickt eine Datei zum Client, also macht dieser einen Download...

Ne, wenn, dann MySQL, weil es im Windows-XAMPP Paket eh enthalten ist... Es soll problemlos damit laufen können...