Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi FireDAC MySQL auto-commit (https://www.delphipraxis.net/194143-firedac-mysql-auto-commit.html)

Hanzo 22. Okt 2017 12:37

Datenbank: MySQL • Version: 5.6 • Zugriff über: FireDAC

FireDAC MySQL auto-commit
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz