Topic: Падения программы при сетевой работе с MySQL

Программа работает на пользовательских ПК, но данные пишет в базу MySQL находящуюся на сервере предприятия в локальной сети.
Иногда, при закрытии окон программы она зависает на пару-тройку секунд, а потом приложение просто закрывается без выдачи каких-либо сообщений.
Скорее всего это проблемы с сервером предприятия, т.к. было замечено, что и при работе с 1С происходят иногда зависания на несколько секунд, показывая пиктограммку ожидания обновления данных.
Т.е. 1C умеет ждать пока сервер сможет обработать ее запрос.
Вопрос - как происходят INSERT и UPDATE в MVD?
Делаются ли они через Try?
Можно ли как-то обезопасить программу от тормозов сервера?

Re: Падения программы при сетевой работе с MySQL

Это странно. Работа с базой выполняется в блоках Try Except, с выводом ошибки, если такая случается. Также программа сама пытается тихо переподключиться, если соединение с базой было потеряно, если переподключение не получается, выдается ошибка.


Используете ли вы в скриптах события OnSQLException для самостоятельной обработки исключений связанных с базой данных?

Dmitry.

Re: Падения программы при сетевой работе с MySQL

У меня есть в скрипте функция
function OnSQLException(Sender: TObject; Msg: string; SQL: string): boolean;
в ней кроме обработки возможных известных ошибок есть и такой " универсальный" код:
        result := True; // предотвращает показ системной ошибки
        MessageBox(Msg, 'Необработанная ошибка базы данных! Модуль OnSQLException', MB_OK+MB_ICONWARNING);
        ShowMessage(SQL);
Должен ли он приводить к выводу сообщения об ошибке связанную с вылетанием программы?
Может программа не успевает вывести сообщение до вылета?

Re: Падения программы при сетевой работе с MySQL

Ошибка должна быть. Попробуйте пока убрать из скрипта функцию OnSQLException для теста, может быть это никак и не связано с этим.

Dmitry.

Re: Падения программы при сетевой работе с MySQL

Функцию OnSQLException отключил.
По прежнему иногда приложение просто закрывается без выдачи каких-либо сообщений в момент когда идет обращение к базе (открытие формы с данными).
.
Кстати, если просто выдернуть шнур сетевой карты, то появляется такая ошибка:

Application can not reconnect to MySQL server.
Error message:
Lost connection to MySQL server during query
Error on data reading from the connection:
������� ���������� ���������� ���� �����������, �.�. �� ������� ���������� �� ��������� ����� �� ������� ������ ������, ��� ���� ��������� ��� ������������� ���������� ��-�� ��������� ������� ��� ������������� ����������.

Socket Error Code: 10060($274C)

Т.е. программа нормально обрабатывает общение с mysql сервером, если он не доступен.
Но, в чем же тогда может быть причина  закрывания без выдачи каких-либо сообщений в момент когда идет обращение к серверу?

Re: Падения программы при сетевой работе с MySQL

при любом обращении или к конкретным данным?

Re: Падения программы при сетевой работе с MySQL

Никакой системы нет. Может при открытии формы, может при закрытии. Но именно в момент обращения к базе. Происходит редко, 1-2 раза в день. И похоже, что не на всех ПК.  Может это сетевые проблемы или связано с типом операционки

Re: Падения программы при сетевой работе с MySQL

mikhail_a wrote:

Никакой системы нет. Может при открытии формы, может при закрытии. Но именно в момент обращения к базе. Происходит редко, 1-2 раза в день. И похоже, что не на всех ПК.  Может это сетевые проблемы или связано с типом операционки

а вирусов точно нет ..  просто как я понимаю программа вылетает получается в момент обращения к памяти а не к самой базе..