Здравствуйте, гость ( Вход | Регистрация )
AD | Дата 22.4.2011, 23:08 |
В смысле не вычитает все записи по запросу? Типо этого? Да. |
|
MoPDoBoPoT | Дата 22.4.2011, 21:09 |
она блокирует БД, пока не выполняться все ее select-запросы В смысле не вычитает все записи по запросу? Типо этого?
|
|
AD | Дата 22.4.2011, 13:59 |
Проблема решена. Дело вот в чем. Моя модель SqlFileModel наследовалась от QSqlTableModel, а у QSqlTableModel есть особенность при работе с SQLite она блокирует БД, пока не выполняться все ее select-запросы, что мне изрядно мешало. Решение состоит в том, что модель стал наследовать от QAbstractTableModel. Тогда все вставки в таблицу происходят без проблем. |
|
AD | Дата 21.4.2011, 17:01 |
О. Все-таки каких-то результатов удалось добиться. Смысл в том, что модель, унаследованная от QSqlTableModel блокирует базу данных, в результате чего возникают данные ошибки. Попробую разобраться в этом, тем более, что я видел, что QSqlLite как-то странно работает с моделями. Об этом я видел в ассистенте сообщение. | |
AD | Дата 21.4.2011, 9:19 |
Странно. Блокировку можно получить, когда в рамках разных транзакций происходит попытка изменения БД, но у тебя же одно подключение читает, а другое пишет... Может ещё быть из-за уровня изоляции транзакции EXCLUSIVE, но я не думаю, что ты его указывал. Тоже считаю, что странно. Но пока ничего не выходит. А проблему очень надо решить. Буду безумно благодарен, если сможешь помочь. Никаких EXCLUSIVE не использовал. |
|
MoPDoBoPoT | Дата 19.4.2011, 21:29 |
Странно. Блокировку можно получить, когда в рамках разных транзакций происходит попытка изменения БД, но у тебя же одно подключение читает, а другое пишет... Может ещё быть из-за уровня изоляции транзакции EXCLUSIVE, но я не думаю, что ты его указывал. | |
AD | Дата 18.4.2011, 9:07 |
Если только приаттачить (ATTACH DATABASE) файл БД, после чего переписать туда данные. Но лучше разобраться с проблемой транзакций и писать сразу в файл. Мне кажется, можно попробовать создать отдельное соединение для изменения данных в БД, чтобы не искать активные запросы и сбрасывать их. Сделал новое соединение, специально, чтобы делать выборки и вставки в БД. В итоге получил следующую ошибку при транзакции: Цитата database is locked Unable to commit transaction Как решить эту проблему? |
|
MoPDoBoPoT | Дата 14.4.2011, 21:49 |
Либо я чего-то не понял, либо еще что-то, но загружать БД в память, а потом сохранять в файл не получилось. Если только приаттачить (ATTACH DATABASE) файл БД, после чего переписать туда данные. Но лучше разобраться с проблемой транзакций и писать сразу в файл. Мне кажется, можно попробовать создать отдельное соединение для изменения данных в БД, чтобы не искать активные запросы и сбрасывать их. |
|
AD | Дата 14.4.2011, 10:38 |
Либо я чего-то не понял, либо еще что-то, но загружать БД в память, а потом сохранять в файл не получилось. Прошу, кто может помочь, помогите, пожалуйста. Очень необходимо поправить глюк с транзакциями. Я не понимаю в чем ошибка... | |
AD | Дата 13.4.2011, 9:32 |
Возможно, что где-то ещё активные запросы, например, табличные модели. А как в табличных моделях сделать неактивными запросы? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 14.11.2024, 17:19 |