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

Забыл написать. Это MySQL сервер.
...
Рейтинг: 0 / 0
18.01.2021, 11:10
    #40036728
Gerasimenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
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
18.01.2021, 11:25
    #40036732
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
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
18.01.2021, 11:29
    #40036733
Gerasimenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
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
18.01.2021, 11:32
    #40036736
Gerasimenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
svnvlad
...
Где копать? Проблемы с транзакциями AnyDAC или на сервере линукса? Раньше там стоял FreeBSD, не жаловались. Админ снес фряху, поставил линукс, появилась проблема. Хотя не факт, что после этого, значит из-за этого.
...
Рейтинг: 0 / 0
18.01.2021, 11:35
    #40036738
энди
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
да, ребята правы, такое ощущение что у вас не закрываются транзакции и соответственно сделанные ими изменения откатываются либо по закрытию программы, либо по таймауту транзакции.
То что у вас в программе не используются транзакции в явном виде, значит только то что они используются в неявном :)
Даже без использования хранимок вы преспокойно можете управлять транзакциями через Delphi код. Обертывайте Ваш код в Try Except Finally c явным стартом, коммитом или роллбэком транзакции.
...
Рейтинг: 0 / 0
18.01.2021, 12:29
    #40036759
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
Gerasimenko

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

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

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

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

Заполненность бланка не связана в этом случае с сохранением в БД, если бланк печатается из самой формы, а не из _RecordSet. Заполнил, нажал кнопку сохранить, нажал кнопку распечатать и вышел из формы...
...
Рейтинг: 0 / 0
18.01.2021, 12:43
    #40036767
энди
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
Ну вот смотрите, идет вставка базы в контексте неявно вызванной транзакции, она не закрывается и клиент тут же читает эти данные в БД. В определенных режимах работы транзакции данные прекрасно вернутся на клиента и будут использованы для построения отчета. Затем клиент прибивает приложение (сам ли, потеряли связь и т.д), транзакция подвисает, но данные по прежнему доступны, у транзакции есть таймаут, по таймауту она откатывается и убирает данные которые небыли commit.
При правильном использовании транзакций на клиенте никаких потерь быть не может, у вас похоже никакого явного управления транзакциями не происходит, соответственно используются некие дефолтные настройки как клиента так и сервера. А вот тут уже момент смены сервера вполне может привести к изменению дефолтных настроек у клиента и понеслись проблемы. Таким образом на клиенте требуется явно указывать режим изоляции транзакций, плюс явно запускать и коммитить транзакции при вставке данных в БД.
...
Рейтинг: 0 / 0
18.01.2021, 12:44
    #40036768
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
Если у вас в коде не используются транзакции, значит вы надеялись на то, что работаете в режиме 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
18.01.2021, 12:46
    #40036769
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
Gerasimenko

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

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

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

Да, именно так.
...
Рейтинг: 0 / 0
18.01.2021, 12:53
    #40036776
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
_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
18.01.2021, 12:54
    #40036779
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
svnvlad
Из менеджера SQL вызвал обе команды,
_Vasilisk_
Выполните две команды ( вторую обязательно из контекста своего соединения )
...
Рейтинг: 0 / 0
18.01.2021, 13:19
    #40036789
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадают данные из базы. В чем причина - AnyDAC или неправильные настройки в линуксе?
svnvlad
Последнее время пользователи программы (Клиника) стали жаловаться на исчезновение некоторых записей из базы

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

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

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

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


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