![]() |
Datenbank: MySQL • Version: 8.0.13 • Zugriff über: Firedac
Probleme mit EMySQLNativeException
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
nach mehrjähriger Unterbrechung beschäftige ich mich wieder mit Delphi. Ich habe mit Freuden festgestellt, dass sich seit meiner letzten Begegnung mit Delphi vieles verbessert hat. Aktuell verwende ich Delphi 12. Nach wenigen Tagen war ich wieder im Thema und komme mit der neuen Version gut zurecht, stolpere aber über ein Problem, mit dem ich noch nicht konfrontiert wurde. Ich versuche erstmals mit Delphi und Firedac eine MySQL DB zu bearbeiten. Prinzipiell funktioniert das auch. Aber: In einer MySQL Tabelle habe ich ein Feld, welches mit dem Constraint "UNIQUE" definiert wurde. Nach füllen der Tabellenfelder führe ich die Anweisung "FDTable1.ApplyUpdates();" in einem try-Block aus um den erwarteten Fehler abzufangen, der bei der Verletzung des Constraint "UNIQUE" auftreten muss. Der try-Block sieht wie folgt aus:
Delphi-Quellcode:
Wenn ich den Code ohne Debugger ausführe passiert Garnichts.
try
FDTable1.ApplyUpdates(); FDTable1.CommitUpdates; except on E: EMySQLNativeException do begin ShowMessage('Fehler beim Speichern der Daten (MySQL): ' + E.Message); FDTable1.CancelUpdates; end; Führe ich den Code mit Debugger aus, erscheint die erwartete Fehlermeldung (siehe Anhang). Meine, im try-Block definierte Fehlerbehandlung wird aber nie angesprungen. Auch dann nicht, wenn ich in der Benachrichtigung (Anhang) die Option "Diesen Exception-Typ ignorieren" markiere. Wo liegt mein Problem? Ich bin für jede Hilfe dankbar! |
AW: Probleme mit EMySQLNativeException
.. wird denn genau dieser Fehler "EMySQLNativeException" geworfen wenn die unique Constraints betroffen sind?
Grüße Klaus |
AW: Probleme mit EMySQLNativeException
Hilft das hier weiter?
![]() |
AW: Probleme mit EMySQLNativeException
Du kannst einfach einmal in dem Dialog aus deinem Screenshot auf Anhalten drücken. Dann siehst du oben links den Stacktrace zu der Stelle, an der der Fehler geworfen wird.
Wenn du dich dann durch den Stacktrace durch klickst, wirst du eine Stelle finden, an der die Exception mit try..except abgefangen wird. Deshalb läuft diese nicht in dein try..except. DeddyH hat ja schon eine entsprechende Erklärung zur Behandlung deines ApplyUpdates verlinkt. Das wird auch in der Doku beschrieben: ![]() Du übergibst die maximale Anzahl Fehler, die akzeptiert werden sollen, bevor die Operation abgebrochen wird. Zurück bekommst du die Anzahl der aufgetretenen Fehler. Ist diese größer als 0, kannst du abbrechen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz