![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Litkevich Yuriy |
![]() ![]()
Сообщение
#1
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Тут порешал для работы с Firebird'ом воспользоваться драйвером QIBASE, до этого работал через QODBC.
Наткнулся на проблему, более одного раза (!) не могу воспользоваться транзакцией. Выжимка из кода: такой код почему-то срабатывает только один раз, если его вызвать повторно, то на model->submitAll() возникает ошибка.В Qt 4.4.3: "QSqlError(-901, "Unable to execute query", "Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements")" В Qt 4.6.0: "QSqlError(-901, "Unable to execute query", "invalid transaction handle (expecting explicit transaction start)")" Без транзакций всё работает как в аптеке, а также с транзакциями через QODBC. Пробовал какую-то не свежую версию QFirebird, которую выкладывал один человек на прогорге, они просто падает на первой же транзакции (model->submitAll()) Может кто-нибудь просветить в чём проблема? Окружение Firebird - 2.1.2.18118 Windows 2000 SP4 |
|
|
![]() |
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Продолжаю раскопки проблемы.
--1-- Заменил QSqlTableModel, на простой QSqlQuery. Все работает в любом окружении, при любой версии Qt для компиляции. Стало быть проблема именно с QSqlTableModel + Драйвер Interbse/Firebird --2-- сегодня наткнулся на странную ситуацию. Поставил на свой нетбук, с Вин ХП домашней, Qt SDK 2010.02 (Qt 4.6.2), запустил эту тестовую прогу уже скомпиленную с помощью Qt 4.4.3 И она работает! т.е. все десять транзакций выполняются. Я обрадовался, скомпилил, в консоли, ту прогу в окружении Qt 4.6.2. И она опять НЕ работает! Этого я вообще не понял. П.С. обновил первое сообщение, добавив полное описание окружения. --3-- Засунув в драйвер QIBASE кучу отладки, на сегодня, выяснил только одну вещь: Старт транзакции происходит всякий раз, с новым номером транзакции. Но, почему-то сама запись в базу (второй и последующие разы) происходит с номером транзакции, который был у первой транзакции |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 18:26 |