2017-01-24 6 views
1

Meine App arbeitet mit MySQL-Datenbank, zur Verbindung verwende ich FireDAC-Komponenten. Das letzte Mal, wenn ich ein Netzwerkproblem habe, teste ich es und es sieht so aus (wie immer) es verliert 4 Ping-Anfrage. Meine App gibt mir einen Fehler zurück: "[FireDAC] [Phys] [MySQL] Die Verbindung zum MySQL Server wurde während der Abfrage verloren". Jetzt die Frage: Einstellung fdconnection.TFDUpdateOptions.LockWait auf wahr (Standard ist falsch) wird mein Problem lösen oder neue Probleme machen?Delphi + Firedac und Netzwerkverbindung Fehler

Antwort

1

TFDUpdateOptions.LockWait hat keinen Einfluss auf Ihre Verbindung zur Datenbank. Es bestimmt, was passiert, wenn eine Datensatzsperre nicht sofort erreicht werden kann. Die documentation sagt, es ist ziemlich klar:

Use the LockWait property to control whether FireDAC should wait while the pessimistic lock is acquired (True), or return the error immediately (False) if the record is already locked. The default value is False.

The LockWait property is used only if LockMode = lmPessimistic.

FireDAC kann nicht eine Sperre warten, wenn es um die Verbindung verliert, so klar gibt es keine Möglichkeit, das Schloss zu entweder anfordern oder festzustellen, ob sie gewonnen wurde. Wenn Sie also LockWait ändern, wird das Problem mit der verlorenen Verbindung nicht geändert, und viele andere Vorgänge können mit den Daten verlangsamt werden.

Die einzige Lösung für Ihre verlorenen Ping-Anfragen besteht darin, Ihre Netzwerkverbindung zu reparieren, damit sie keine Pakete mehr löscht. Einfaches Ändern von Optionen auf TFDConnection wird Netzwerkprobleme nicht beheben.

+0

Ich überrasche dich - es hat funktioniert. Jetzt, wenn die Verbindung wieder hergestellt ist, ist die Anwendung nicht mehr "hängen" –

Verwandte Themen