1 (edited by k245 2021-07-13 11:14:34)

Topic: Неявная логика и скрытые ошибки

Недавно натолкнулся на очень труднолокализуемую ошибку.


Суть проблемы: структура БД на сервере MySQL не соответствовала структуре БД проекта - в описании базы данных проекта (tables.ini) было поле, которое отсутствовало на сервере.  При этом данное поле не использовалось ни в SQL-запросах, ни в свойствах визуальных компонент. Однако, при открытии формы редактирования возникала ошибка выполнения SQL-запроса, в котором фигурировало данное поле. Строка возникновения ошибки указывалась неверно, так как ошибка возникала внутри алгоритмов открытия формы редактирования, реализованных в MVD.


Мне кажется, что в этот алгоритм нужно внести изменения: запрос, который формируется для заполнения компонентов на форме редактирования данными, должен строится не по структуре базы данных, а по составу компонентов на форме редактирования и их связи с БД. Это не только исключит подобную ошибку, но и снизит нагрузку на сервер, так как на форме редактирования может быть меньше компонент, чем полей в редактируемой таблице. Или по крайней мере выдавать более информативное сообщение в подобном случае.


Как бонус можно добавить проверку на соответствие структуры, которая будет выполняться как отдельная функция. Её можно будет использовать для создания механизма автоматического обновления БД на сервере. Если не ошибаюсь, подобная проверка реализована для SQLite. Она происходит сразу при подключении к БД SQLite при запуске приложения.


http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=7807&download=0

Post's attachments

Attachment icon ошибка.jpg 33.15 kb, 117 downloads since 2021-07-13 

Визуальное программирование: блог и телеграм-канал.