Hallo,
ich habe wieder meinen lieblingsfehler der sigsev Reihe
Ich habe eine Anwendung (wird Computerspiel) die mit
MySQL arbeitet (über Zeos). Nun habe ich das ganze auf SQLite umgestellen,
DB,
SQL Befehle usw. Bis hier her funktioniert auch alles so wie es soll.
Nun wenn ich mein Programm starte, drücke ich auf einen Button und er schreibt und liest in der SQLite. Alles funktioniert.
Wenn ich nun ein weiteres mal auf den gleichen Button klicke, erhalte ich einen Sigsev fehler. Obwohl exakt die gleichen Schritte ausgeführt worden sind wie zuvor. Mit
MySQL zuvor hat alles wunderbar geklappt.
Nun habe ich ein bisschen geforscht in welcher Zeile der Sigsev ausgelöst worden ist, und zwar hier:
Code:
ZQuery2.Close; ZQuery2.SQL.Clear;
if db_version = 'sqlite' then begin ZQuery2.SQL.Text := 'SELECT count(fen) as max FROM verlauf where tief = :i;'; end;
ZQuery2.ParamByName('i').AsInteger := tief2;
ZQuery2.Open; // <- Hier kommt der Sigsev
Für mich eher unlogisch das er ausgerechnet in diesen Abschnitt auftritt. Beim ersten Durchlauf bzw. ersten Klick hat ja noch alles geklappt. Beim zweiten auf einmal nicht mehr - warum?
An den Select kann es nicht liegen, die Variable tief2 ist auch ein gültiger Wert. Sigsev deutet ja auf eine Speicherverletzung hin.
Also ist meine Vermutung das es irgendwie an der Datenbank selbst liegt, das dort zuviel Speicher verbraucht ist, irgendwas zuviel ist,... aber das übersteigt meine Kenntnisse. Muss man da irgendwas freigeben, unlocken o.ä.??
Das würde zumindest erklären, warum es erst funktioniert, und dann nicht mehr. Zumal ja vorher schon ein paar Selects und inserts gemacht worden sind. Vermute ich, dass es an dieser Stelle "Zuviel" geworden ist.
Das ganze findet innerhalb einer transaction statt. Aber auch wenn ich die transaction auskommentiere, kommt der Fehler.
Hat jemand noch Ideen oder Lösungsvorschläge??
Lg,
Monday