Wer mit seiner Datenbankanwendung auf Delphi 10.2.1 migriert und den aktuellen Connector 6.1.11 von
MySQL verwendet, sollte hier mal weiterlesen.
Wenn in TxOptions "AutoCommit" aktiv ist und die Ausführung in einem StartTransaktione/Commit Block eingeschlossen wird, werden die Änderungen nicht in die Datenbank übertragen! "Böse Falle"!
Wenn AutoCommit deaktiviert wird, funktioniert die Transaktion wie erwartet. Ich habe unten mal ein Statement von Embarcadero drangehängt, was dem aktuellen Verhalten widerspricht.
Wer sich darauf verlässt, das der folgende Code die Änderung in die Datenbank schreibt, wird bei aktiviertem AutoCommit schwer enttäuscht.
Delphi-Quellcode:
FDConnection1.StartTransaction;
try
FDQuery1.ExecSQL;
....
FDQuery1.ExecSQL;
FDConnection1.Commit;
except
FDConnection1.Rollback;
raise;
end;
Hier der Ausschnitt von Embarcadero zum Thema AutoCommit:
If the application called the StartTransaction method, then the automatic transaction management will be disabled until the corresponding Commit or Rollback method call. Generally, there is no need to set the AutoCommit property value to False, just use the explicit transaction control (StartTransaction, Commit, or Rollback) when you need it.
Über Euer Feedback bzw. Erfahrung würde ich mich freuen.
VG Hans