Текущий архив: 2007.09.16;
Скачать: CL | DM;
ВнизLog, debug или что-то вроде этого? Найти похожие ветки
← →
Lavrenty © (2007-05-17 21:38) [0]Здравствуйте мастера!
Программа работает с базой InterBase. Есть запросы, в соответствие которым назначены транзакции. Минут через 20-30-40 после запуска программы выскакивает сообщение "Transaction is active", и продолжает появляться через каждый период обращения к базе(10 сек). Так вот, я не пойму(из этого краткого сообщения) на какой транзакции это начинается и почему. Подскажите пожалуйста, как можно сделать так, чтобы все события, происходящие в программе записывались в текстовый файл, а то никак не могу понять в каком месте программа глючит ?
← →
Johnmen © (2007-05-17 22:08) [1]Много параллельных транзакций?
Несколько потоков?
← →
Lavrenty © (2007-05-17 22:31) [2]
> Много параллельных транзакций?
По ходу программы одновременно работающих транзакций 2-3. Вообще их 15 штук. Каждому запросу соответствует одна транзакция. Если закрывается запрос(набор данных) тут же закрываю и транзакцию ("Commit"). Но, судя по сообщению, выходит, что программа пытается совершить какое-то действие с данными, для которых транзакция ещё не завершилась. Самое интересное, что цикл обращений к базе (и соответсвенно выполняемых всех запросов) очень маленький - 6 сек. И вот всё это работает, работает и вдруг на тебе - "Transaction is active".
← →
Johnmen © (2007-05-17 22:48) [3]Тут надо код смотреть...
ЗЫ
Количество транзакций на приложение более 3 нецелесообразно. А иногда и вредно...
← →
Lavrenty © (2007-05-17 22:50) [4]Было именно 3. Было тоже самое.
← →
Johnmen © (2007-05-17 23:08) [5]Причём одна - читающая, вторая - пишущая. И м.б. третья - для отчетов.
← →
Lavrenty © (2007-05-17 23:27) [6]Извиняюсь, их было не 3, а 5. Дело в том, что программа была написана не мной, но мне приходится её запускать в жизнь. Так как с InterBase не работал раньше, то не обратил внимания, вернее не знал, что это важно
> Причём одна - читающая, вторая - пишущая. И м.б. третья
> - для отчетов.
посмотрел сейчас код повнимательнее, но что-то не видно строгого соблюдения этого правила(когда было 5 транзакций): читающие запросы со своей транзакцией, пишущие со своей. Но, если то сообщение выскакивало именно из-за этого, то почему сейчас тоже происходит, ведь у каждого запроса своя транзакция. Отчёт не формируется, результат пишется в XML-файл.
← →
Johnmen © (2007-05-17 23:40) [7]В общем, надо ковырять код на предмет старта транзакции, когда она ещё не подтверждена/откачена(откатана? :)) о чем и говорит "Transaction is active".
← →
Lavrenty © (2007-05-17 23:53) [8]Что ж, спасибо! Буду ковырять.
← →
Desdechado © (2007-05-18 13:20) [9]Не знаю, как в современных IB, а в версиях до 6 включительно клиентская библиотека НЕ thread-safe, поэтому не должно быть одновременно выполняющихся запросов в рамках одного подключения к БД. Например, несколько потоков одновременно (каждый в своей транзакции) долбится в БД - гарантировано вылетит.
← →
Sergey13 © (2007-05-18 13:22) [10]Одна транзакция всегда надежнее. 8-)
Страницы: 1 вся ветка
Текущий архив: 2007.09.16;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.055 c