Einzelnen Beitrag anzeigen

Hanzo

Registriert seit: 21. Dez 2013
3 Beiträge
 
#1

FireDAC MySQL auto-commit

  Alt 22. Okt 2017, 12:37
Datenbank: MySQL • Version: 5.6 • Zugriff über: FireDAC
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

Geändert von Hanzo (22. Okt 2017 um 15:57 Uhr)
  Mit Zitat antworten Zitat