powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
23 сообщений из 23, страница 1 из 1
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036719
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последнее время пользователи программы (Клиника) стали жаловаться на исчезновение некоторых записей из базы.
Регистратор вносит прием пациента, сохраняет, распечатывает. Через несколько дней возвращается к карте пациента, а данной записи там нет.
Так же периодически наблюдается следующая ситуация (думаю, что оттуда же ветер дует): регистратор вносит запись о приеме пациента, распечатывает ее, дает пациенту. Пациент идет к врачу, врач открывает у себя на компьютере этого пациента, а записи о приеме там нет. Хотя она есть у регистратора.
Где копать? Проблемы с транзакциями AnyDAC или на сервере линукса? Раньше там стоял FreeBSD, не жаловались. Админ снес фряху, поставил линукс, появилась проблема. Хотя не факт, что после этого, значит из-за этого.
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036725
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у Anydac/Firedac нет транзакций, транзакции есть у используемого Вами SQL сервера.
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036727
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
энди
у Anydac/Firedac нет транзакций, транзакции есть у используемого Вами SQL сервера.

Забыл написать. Это MySQL сервер.
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036728
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad,

Похоже на незакрытую транзакцию. По закрытию программы (например) происходит откат.

проверь хранимки на безопасный код (что-то типа такого)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
BEGIN TRAN 
    BEGIN TRY
         ...
	 COMMIT TRAN 
    END TRY
	BEGIN CATCH
	  ROLLBACK TRAN 
          ...
	END CATCH
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036732
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gerasimenko
svnvlad,

Похоже на незакрытую транзакцию. По закрытию программы (например) происходит откат.

проверь хранимки на безопасный код (что-то типа такого)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
BEGIN TRAN 
    BEGIN TRY
         ...
	 COMMIT TRAN 
    END TRY
	BEGIN CATCH
	  ROLLBACK TRAN 
          ...
	END CATCH


Хранимки в коде не используются, транзакции тоже.
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036733
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad
Gerasimenko
svnvlad,

Похоже на незакрытую транзакцию. По закрытию программы (например) происходит откат.

проверь хранимки на безопасный код (что-то типа такого)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
BEGIN TRAN 
    BEGIN TRY
         ...
	 COMMIT TRAN 
    END TRY
	BEGIN CATCH
	  ROLLBACK TRAN 
          ...
	END CATCH


Хранимки в коде не используются, транзакции тоже.

Тогда похоже у вас стоит конструкция Try...except / finally без обработки самой ошибки, которая глушит ошибку при попытке сохранения. (Чудес не бывает)
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036736
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad
...
Где копать? Проблемы с транзакциями AnyDAC или на сервере линукса? Раньше там стоял FreeBSD, не жаловались. Админ снес фряху, поставил линукс, появилась проблема. Хотя не факт, что после этого, значит из-за этого.
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036738
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, ребята правы, такое ощущение что у вас не закрываются транзакции и соответственно сделанные ими изменения откатываются либо по закрытию программы, либо по таймауту транзакции.
То что у вас в программе не используются транзакции в явном виде, значит только то что они используются в неявном :)
Даже без использования хранимок вы преспокойно можете управлять транзакциями через Delphi код. Обертывайте Ваш код в Try Except Finally c явным стартом, коммитом или роллбэком транзакции.
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036759
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gerasimenko

Тогда похоже у вас стоит конструкция Try...except / finally без обработки самой ошибки, которая глушит ошибку при попытке сохранения. (Чудес не бывает)

Однако ему хватает этого, чтобы распечатать отчет по данной записи (на этом же компьютере). Данные для отчета ведь берутся после обращения к базе. На других она не появляется. Все дело в транзакциях? Может на сервере есть какие-то настройки, чтобы лучше коммитило. На FreeBSD записи не пропадали.
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036763
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad
Gerasimenko

Тогда похоже у вас стоит конструкция Try...except / finally без обработки самой ошибки, которая глушит ошибку при попытке сохранения. (Чудес не бывает)

Однако ему хватает этого, чтобы распечатать отчет по данной записи (на этом же компьютере). Данные для отчета ведь берутся после обращения к базе. На других она не появляется. Все дело в транзакциях? Может на сервере есть какие-то настройки, чтобы лучше коммитило. На FreeBSD записи не пропадали.

Заполненность бланка не связана в этом случае с сохранением в БД, если бланк печатается из самой формы, а не из _RecordSet. Заполнил, нажал кнопку сохранить, нажал кнопку распечатать и вышел из формы...
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036767
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот смотрите, идет вставка базы в контексте неявно вызванной транзакции, она не закрывается и клиент тут же читает эти данные в БД. В определенных режимах работы транзакции данные прекрасно вернутся на клиента и будут использованы для построения отчета. Затем клиент прибивает приложение (сам ли, потеряли связь и т.д), транзакция подвисает, но данные по прежнему доступны, у транзакции есть таймаут, по таймауту она откатывается и убирает данные которые небыли commit.
При правильном использовании транзакций на клиенте никаких потерь быть не может, у вас похоже никакого явного управления транзакциями не происходит, соответственно используются некие дефолтные настройки как клиента так и сервера. А вот тут уже момент смены сервера вполне может привести к изменению дефолтных настроек у клиента и понеслись проблемы. Таким образом на клиенте требуется явно указывать режим изоляции транзакций, плюс явно запускать и коммитить транзакции при вставке данных в БД.
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036768
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у вас в коде не используются транзакции, значит вы надеялись на то, что работаете в режиме autocommit.

Выполните две команды (вторую обязательно из контекста своего соединения)
Код: sql
1.
2.
SHOW GLOBAL VARIABLES LIKE 'autocommit';
SHOW SESSION VARIABLES LIKE 'autocommit';

Если вторая OFF, то вам нужно после создания своего соединения вызвать
Код: pascal
1.
mysql_autocommit(conn, true);

этого будет достаточно. Или, если у вас и первый запрос выдает false, то вам нужно найти в серверном конфиге строчку
Код: powershell
1.
autocommit=0

и закомментировать ее или установить
Код: powershell
1.
autocommit=1

Вариант с mysql_autocommit() предпочтительнее
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036769
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gerasimenko

Заполненность бланка не связана в этом случае с сохранением в БД, если бланк печатается из самой формы, а не из _RecordSet. Заполнил, нажал кнопку сохранить, нажал кнопку распечатать и вышел из формы...

Форма сохраняет в базу ADQuery.Save; Затем форма закрывается f.Free;
После этого нажимается кнопка, открывается форма отчета FastReport, которая читает данные из базы и распечатывает.
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036771
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad
которая читает данные из базы
... в той же транзакции
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036772
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
энди

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

Да, именно так.
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036776
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Если у вас в коде не используются транзакции, значит вы надеялись на то, что работаете в режиме autocommit.

Выполните две команды (вторую обязательно из контекста своего соединения)
Код: sql
1.
2.
SHOW GLOBAL VARIABLES LIKE 'autocommit';
SHOW SESSION VARIABLES LIKE 'autocommit';

Если вторая OFF, то вам нужно после создания своего соединения вызвать
Код: pascal
1.
mysql_autocommit(conn, true);

этого будет достаточно. Или, если у вас и первый запрос выдает false, то вам нужно найти в серверном конфиге строчку
Код: powershell
1.
autocommit=0

и закомментировать ее или установить
Код: powershell
1.
autocommit=1

Вариант с mysql_autocommit() предпочтительнее

Из менеджера SQL вызвал обе команды, обе выдали ON.
Нужно именно из программы вызвать, а не из менеджера?
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036779
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad
Из менеджера SQL вызвал обе команды,
_Vasilisk_
Выполните две команды ( вторую обязательно из контекста своего соединения )
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036789
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad
Последнее время пользователи программы (Клиника) стали жаловаться на исчезновение некоторых записей из базы

А название-то оказалось пророческим.

Ну а по сути всё уже сказали. Проблема явно связана с транзакциями, и учитывая архитектурный стиль приложения - скорее всего, с какой-нибудь настройкой автокоммита, которая раньше стояла в конфиге и спасала падающие штаны, а теперь оказалась в дефолтовом значении.
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036791
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
svnvlad
Из менеджера SQL вызвал обе команды,
_Vasilisk_
Выполните две команды ( вторую обязательно из контекста своего соединения )

Тоже ON.
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036795
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40036797
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad
Тоже ON.
Ну тогда еще выполните эту команду в момент
svnvlad
Форма сохраняет в базу ADQuery.Save;
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40037122
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
svnvlad
Тоже ON.
Ну тогда еще выполните эту команду в момент
svnvlad
Форма сохраняет в базу ADQuery.Save;

Как раз в этот момент и встраивал код.
...
Рейтинг: 0 / 0
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
    #40037187
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad
Как раз в этот момент и встраивал код.
Проверяли, я надеюсь, на машине заказчика? Или у себя?
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]