2017-01-24 2 views
1

Мое приложение работает с базой данных MySQL, к соединению Я использую компоненты FireDAC. В прошлый раз, когда у меня возникла проблема с сетью, я тестирую ее, и она выглядит (время от времени), теряя 4 запроса ping. Мое приложение возвращает мне ошибку: «[FireDAC] [Phys] [MySQL] Потерянное соединение с сервером MySQL во время запроса». Теперь вопрос: установка fdconnection.TFDUpdateOptions.LockWait в true (по умолчанию - false) решит мою проблему или создаст новые проблемы?Ошибка Delphi + Firedac и сетевого подключения

ответ

1

TFDUpdateOptions.LockWait не влияет на ваше подключение к базе данных. Он определяет, что происходит, когда блокировку записи невозможно получить немедленно. documentation говорит, что это довольно ясно:

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 не может ждать, чтобы получить блокировку, если он теряет связь, так же ясно, что нет никакого способа, либо запросить блокировку или определить, если оно было получено. Поэтому изменение LockWait не приведет к изменению проблемы с потерянным соединением и может замедлить многие другие операции против данных.

Единственное решение для ваших потерянных запросов ping - это исправить сетевое подключение, чтобы оно не прекращало удаление пакетов. Просто случайно изменяющиеся параметры на TFDConnection не собираются исправлять проблемы с сетью.

+0

Я удивляю вас - это сработало. Теперь, когда соединение вернулось, приложение больше не «висит», –