Hallo,
ich sitze zurzeit vor einem ehrlich gesagt eher etwas seltsamen Problem: ich habe zwei Rechner, auf dem einen läuft die Datenbank
MySQL und auf dem anderen entwickle ich ein Programm für meinen Betrieb. Nun greife ich über libsql auf die Datenbank zu und alles funktioniert wunderbar, bis zu dem einen Punkt, an dem mehrere
SQL-Befehle (UPDATE-Befehle) kurz hintereinander an die Datenbank geschickt werden. Ich nutze zum testen gerade die folgende Methode:
Delphi-Quellcode:
// Voraussetzungen:
// - TListBox zum loggen (ListBox1)
// - Verbindung zur Datenbank steht (MyDB1)
// - Es gibt den Datensatz mit ID 1 und UPDATE funktioniert damit
procedure SendTestCommands();
var
sql :
String;
i : Integer;
begin
sql := '
UPDATE test SET testtime = ''
' + FloatToStr(Now) + '
''
WHERE id = 1';
for i := 0
to 10
do
begin
ListBox1.Items.Add(BoolToStr(MyDB1.Query, True));
ListBox1.Items.Add(IntToStr(MyDB1.RowsAffected));
end;
end;
Nun ist es so, dass nach dieser Schleife immer ein True gefolgt von einer 0 oder 1 kommt. Es sollte meines Erachtens nach aber immer eine 1 folgen und nicht nur ein mal, so wie es in diesem Beispiel leider ist (zumindest bei mir). Wenn ich allerdings nach den beiden Befehlen in der Schleife ein SleepEx(...) und mindestens 20 Millisekdungen angebe, dann bekomme ich als Ergebnis immer die 1, allerdings ist das eine sehr unsaubere Lösung.
Daher meine Frage: woran kann es liegen? Liegt es an einer
MySQL-Einstellung, die ich ändern kann? Oder mache ich irgendetwas falsch?
Mit fischigen Grüßen
s.h.a.r.k
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)