Seite 1 von 1

sqlite locked by drop table [gelöst]

Verfasst: 17. August 2010 13:45
von Troll.Soft
Hallo,
verwende QSqlDatabase und sqlite. Der SqlBefehl "drop table" stößt auf den Fehler "database table is locked Unable to fetch row". Die Doku von sqlite sagt hierzu folgendes:
Trying to CREATE or DROP a table or index while a SELECT statement is still pending.
Sometimes people think they have finished with a SELECT statement because sqlite3_step() has returned SQLITE_DONE. But the SELECT is not really complete until sqlite3_reset() or sqlite3_finalize() have been called.
Mit "sqlite3_reset() etc" ist offensichtlich die C-API gemeint.
Wie kann ich diesen Befehl mit Qt realisieren, aufrufen ??

tschüß
Troll.Soft

Verfasst: 17. August 2010 13:48
von franzf
Speicherst du irgendwo ein QSqlQuery-Objekt mit aktivem SELECT? Wäre meine erste Anlaufstelle.

Verfasst: 17. August 2010 14:31
von Troll.Soft
franzf hat geschrieben:Speicherst du irgendwo ein QSqlQuery-Objekt mit aktivem SELECT? Wäre meine erste Anlaufstelle.
Das von Dir angesprchene Problem kenne ich. Ist hier definitiv nicht der Fall. Es sind auch nur einige Table, die sich nicht droppen lassen, wobei ich den Unterschied zwischen den Tabellen, die sich löschen lassen und denen, die sich nicht löschen lassen nicht erkennen kann.
tschüß
Troll.Soft

Verfasst: 17. August 2010 14:40
von franzf
Hast du irgendwelche QSqlQueryModels? Die speichern sich eine Kopie des Queries. Irgendwoher muss der Lock ja kommen :P

Verfasst: 17. August 2010 14:52
von Troll.Soft
In der Tat, ich verwende models. Aber so wie vorgesehen, setQuery etc.

Wenn der Drop nicht will, kann ich trotzdem ein "exec("delete from " + TableName);" mit Erfolg abschicken. Verlasse ich anschließend mein Programm und starte es wieder, läßt sich droppen.
Ist aber ein ziemlich öder Workaround :)
tschüß
Troll.Soft

Verfasst: 17. August 2010 15:33
von Troll.Soft
franzf hat geschrieben:Speicherst du irgendwo ein QSqlQuery-Objekt mit aktivem SELECT? Wäre meine erste Anlaufstelle.
Seufz, Fehler entdeckt.
In den älteren Untiefen meine Projekts fanden sich nicht ordnungsgemäß vernichtete Modells. Und somit trifft obige Vermutung den Punkt.
tschüß
Troll.Soft