Russian Qt Forum

Qt => Базы данных => Тема начата: alexandr_ps от Август 10, 2009, 11:01



Название: Разрыв соединения с БД
Отправлено: alexandr_ps от Август 10, 2009, 11:01
Добрый день.

Ситуация следующая - в связке работает СУБД PostgreSQL 8.3 и клиентское приложение на Qt 4.4.2, OC на обоих - OpenSUSE 10.3. Клиент запрашивает данные с сервера и все хорошо, пока соединение не обрывается тупым выдергиванием сетевого кабеля :), которое приводит к зависанию query->exec('запрос'). Скорее всего проблема возникает из-за настроек TCP/IP(стоят стандартные, ничего не менялось с момента установки систем), но туда залезать не очень хочется. Нет ли стандартного средства, как установить таймлимит на выполнение запроса к БД? Сейчас пришлось делать это все в 2 потоках - в одном выполняется запрос, в другом устанавливается таймер, который следит и в случае таймаута заново запускает поток запросов к БД. Хочется от своего велосипеда избавиться и перейти на велосипед от производителя :) Мне кажется должен быть предусмотрен какой-то механизм. Вообще кто как решает проблему с разрывом соединения с БД в своих приложениях?

Заранее, спасибо!


Название: Re: Разрыв соединения с БД
Отправлено: uriel от Август 10, 2009, 12:00
Было уже совсем недавно. :)
http://www.prog.org.ru/topic_9421_0.html


Название: Re: Разрыв соединения с БД
Отправлено: ритт от Август 10, 2009, 12:17
один раз - случайность; два - уже тенденция; а после пятого - однозначно, постить саггесты троллям...


Название: Re: Разрыв соединения с БД
Отправлено: alexandr_ps от Август 10, 2009, 12:27
Спасибо за ссылку, теперь я знаю, что я не одинок :)
Как оказалось мой путь решения проблемы единственный, так что ничего не поделаешь буду его использовать и дальше.


Название: Re: Разрыв соединения с БД
Отправлено: CroCIV от Август 10, 2009, 13:23
Нет ли стандартного средства, как установить таймлимит на выполнение запроса к БД?

http://doc.crossplatform.ru/qt/4.5.0/qsqldatabase.html#setConnectOptions
на сколько я отсюда вижу у PostgreSQL есть connect_timeout, почему бы его не попробовать уменьшить секунд до 3 - 5?


Название: Re: Разрыв соединения с БД
Отправлено: alexandr_ps от Август 11, 2009, 09:57
Сам смотрел на эту функцию, пробовал даже использовать, но ничего не меняется. Все то же зависание на QSqlQuery->exec().


Название: Re: Разрыв соединения с БД
Отправлено: ритт от Август 19, 2009, 22:47
прикреплю сюда: http://qt.nokia.com/developer/task-tracker/index_html?method=entry&id=130779