Russian Qt Forum

Qt => Базы данных => Тема начата: vorotislav от Июнь 23, 2014, 12:46



Название: qt + PostgreSQL. Транзакции
Отправлено: vorotislav от Июнь 23, 2014, 12:46
Доброго времени суток. Начал работать с БД PostgreSQL через транзакции. Все замечательно работает - и добавляет записи, и редактирует и удаляет. Но при закрытии программы вылезают в окошке "Вывод приложения" следующие записи:

РџР Р•Р”РЈРџР Р•Р–Р”Р•РќР˜Р•:  транзакция уже выполняется
РџР Р•Р”РЈРџР Р•Р–Р”Р•РќР˜Р•:  нет незавершённой транзакции

Перевел на русский через Notepad++:

ПРЕДУПРЕЖДЕНИЕ:  транзакция уже выполняется
ПРЕДУПРЕЖДЕНИЕ:  нет незавершённой транзакции

И не пойму в чем дело. Повесил на каждое открытие\закрытие qDebug() :

if (QSqlDatabase::database().transaction())
    qDebug() << "tr addSchemaPoint start";
...
if (QSqlDatabase::database().commit())
    qDebug() << "tr addSchemaPoint commit";

При выполнении приложения на каждый старт есть свой коммит, а сообщения все равно остаются. И даже не могу понять какая из транзакций выполняется. Не подскажете как быть? Может как то можно отловить эту выполняющуюся транзакцию. И второе сообщение немного не понятно. Если нет незавершенных транзакций - то зачем предупреждение делать?
Заранее благодарен!


Название: Re: qt + PostgreSQL. Транзакции
Отправлено: Old от Июнь 23, 2014, 12:53
У postgresql нет вложенных транзакций.
Если вы сделали один раз begin(), то транзакция запустилась, повторный вызов begin() ничего не делает, кроме выдачи предупреждения.
Тоже и с commit: первый закрывает начатую транзакцию, второй выдает предупреждение, что активных транзакций нет.


Название: Re: qt + PostgreSQL. Транзакции
Отправлено: vorotislav от Июнь 23, 2014, 14:24
Old, спасибо большое! Наверняка проблема в этом, у меня есть такие ситуации! Сегодня уберу:)