Firebird. При работе по сети не видны изменения.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Firebird. При работе по сети не видны изменения.

Сообщение btsoft » 10.10.2014 12:12:36

Здравствуйте. Разработал СУБД на Firebird. Когда один пользователь - все работает замечательно. Но недавно начал тестировать ее по сети, и выяснил следующую вещь. Если запущено 2 экземпляра программы, то во втором не видны изменения, сделанные в первом. Т.е. заходишь в какой-нибудь документ, меняшь там сумму, записываешь. Смотришь с другого компьютера - а в этом документе сумма старая! Изменения видны только после перезапуска программы. Т.е. данные-то пишутся, но как-то странно.
Плюс, если пытаться со второго компьютера отредактировать только что измененную на первом запись, выдается ошибка Deadlock. Update conflicts with concurrent update.
Конфигурация: Lazarus 1.0.14, Firebird 2.5.2, ZEOS 7.1.2 Stable
btsoft
незнакомец
 
Сообщения: 7
Зарегистрирован: 04.04.2014 06:24:48

Re: Firebird. При работе по сети не видны изменения.

Сообщение alexs » 10.10.2014 12:44:24

Вам надо изучить механизм транзакций.
В частности - у вас скорее всего snaphot транзакция и не разу не подтверждается во время работы.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Firebird. При работе по сети не видны изменения.

Сообщение *Rik* » 10.10.2014 13:30:50

alexs писал(а):Вам надо изучить механизм транзакций.
В частности - у вас скорее всего snaphot транзакция и не разу не подтверждается во время работы.

Кроме этого, могу предложить вам использовать компоненты IBExpress, которые я немного "допилил". В отличие от ZEOS, для создания "живых" запросов, достаточно одной компонены TIBDataSet, в ней изначально предусмотрены SQL запросы для выборки, вставки, редактирования, удаления, обновления данных, UpdataObject не требуется. Вы можете управлять пишущей и читающей транзакцией раздельно, чтобы избежать блокировок и ситуаций подобной вашей, полный контроль над транзакциями. Есть автоформатирование полей (для числовых данных: разделение разрядов, точность после запятой в соответствии с точностью поля заданной при создании этого поля, форматирование дат), можно задавать персональные форматы для отдельных полей и форматы редактирования данных.
Добавлена поддержка выражений RETURNING FIELD в Insert и Update запросах, поддержка возвращаемых значений из EXECUTE PROCEDURE, поддержка выражения EXECUTE BLOCK.
Все бесплатно и кросс-платформенно.
visual-t.ru
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Firebird. При работе по сети не видны изменения.

Сообщение alexs » 10.10.2014 13:54:41

*Rik*
Ну я точно также погу предложить человеку UIB+FBDataSet. :lol:
Но и в Zeos можно всё настроить.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Firebird. При работе по сети не видны изменения.

Сообщение Zhanat » 10.10.2014 14:14:18

В TZConnection есть свойство TransactIsolationlevel поставил там tiReadCommitted тогда показывает изменения на другом компьютере только после обновление SQL запроса.
Zhanat
новенький
 
Сообщения: 21
Зарегистрирован: 06.09.2013 08:46:40

Re: Firebird. При работе по сети не видны изменения.

Сообщение alexs » 10.10.2014 17:58:08

Zhanat писал(а):изменения на другом компьютере только после обновление SQL запроса.

А как вы хотели? :-)
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Firebird. При работе по сети не видны изменения.

Сообщение btsoft » 12.10.2014 08:16:04

Спасибо всем за ответы и советы. Помогло в ZConnection поставить TransactIsolationlevel в tiReadCommitted. И также при записи какого-оибо объекта делаю перед началом записи изменений ZConnection.StartTransaction, а после окончания - ZConnection.Commit.
btsoft
незнакомец
 
Сообщения: 7
Зарегистрирован: 04.04.2014 06:24:48

Re: Firebird. При работе по сети не видны изменения.

Сообщение zoltanleo » 16.10.2014 12:20:12

btsoft писал(а):Помогло

alexs прав, вам надо идти на сайт к kdv(ibase.ru) и читать основы работы с БД. Там очень много нюансов, и вы набьете себе еще не одну шишку, пока не почитаете об этом или не познаете на собственном печальном опыте :)
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 237

Рейтинг@Mail.ru
cron