Russian Qt Forum
Ноябрь 24, 2024, 09:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Не работает SQLite на других машинах  (Прочитано 25831 раз)
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« : Январь 28, 2010, 17:29 »

Господа, возник странный глюк (а может быть и закономерный, но пока - впервые).
Написал небольшую софтинку, которая, помимо прочего, пишет в базу (SQLite).
У меня на компе все ОК, работает как часы. А на других при открытии базы выдает ошибку, и ничего никуда писать не хочет.
Отдавал людям 4 файла: мой .exe, QtGui4.dll, QtCore4.dll, QtSql4.dll
У меня прога работает из любого каталога, если в нем есть эти файлы. Если базы нет, она создается, если есть, дополняется. У них и не создается, и не дополняется, если я даю им свою версию. Где грабли? Что сделано не так?
Записан

Эвтаназия - наше хобби!
SABROG
Гость
« Ответ #1 : Январь 28, 2010, 17:42 »

Вероятно sql драйвера собраны в виде плагинов.
Записан
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« Ответ #2 : Январь 28, 2010, 18:14 »

Вероятно sql драйвера собраны в виде плагинов.

Гм... ставил 4.6.0 из экзешника, commercial. После ничего не трогал. Плагины? Возможно... Не подскажете, что нужно изменить и как? Пишу в VS2008.
Записан

Эвтаназия - наше хобби!
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #3 : Январь 28, 2010, 18:50 »

Вероятно sql драйвера собраны в виде плагинов.
Гм... ставил 4.6.0 из экзешника, commercial. После ничего не трогал. Плагины? Возможно... Не подскажете, что нужно изменить и как? Пишу в VS2008.
Поставь на виртуал-бокс винду чистую и протестируй свои "отдал" на ней.
скорее всего не хватает <твай проект фолдерз>\plagins\qsqlite4.dll
« Последнее редактирование: Январь 28, 2010, 18:52 от panAlexey » Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
SABROG
Гость
« Ответ #4 : Январь 28, 2010, 20:23 »

Вероятно из-за того, что твой дистрибутив Qt коммерческий все GPL'ные 3rd библиотеки собраны в качестве .dll. Тебе нужно зайти в папку $QTDIR/plugins/sqldrivers и оттуда достать .dll файл. Потом читать раздел "Deploying an Application on Windows" в документации насчет того как таскать плагины с твоей программой и где их надо размещать.
Записан
SASA
Гость
« Ответ #5 : Январь 29, 2010, 11:36 »

http://doc.crossplatform.ru/qt/4.5.0/deployment.html
Записан
Akaiten
Гость
« Ответ #6 : Январь 29, 2010, 11:54 »

Недавняя тема Подключение плагинов при переносе на машину без установленной Qt.
Записан
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« Ответ #7 : Январь 29, 2010, 17:16 »

Спасибо! На днях поставлю Qt на другую машину, и сделаю конфиг по всем правилам. Надеюсь, заработает...
Записан

Эвтаназия - наше хобби!
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #8 : Январь 29, 2010, 17:22 »

Спасибо! На днях поставлю Qt на другую машину, и сделаю конфиг по всем правилам. Надеюсь, заработает...
Да скачай ты виртуал-бокс да поставь на свою машину чистую ось под него да потренируйся.
Виртуалки затем и придумали.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« Ответ #9 : Январь 30, 2010, 10:55 »

Спасибо! На днях поставлю Qt на другую машину, и сделаю конфиг по всем правилам. Надеюсь, заработает...
Да скачай ты виртуал-бокс да поставь на свою машину чистую ось под него да потренируйся.
Виртуалки затем и придумали.

А зачем? Она и там не заработает. На данный момент попробовал прогу на 6 машинах (2 c Win-7, 4 c XP), на которых она должна была бы, по идее, работать, и ни на одной не заработала, вылетая с одной и той же ошибкой. Понятно, что виноваты дрова SQLite (все остальные ф-ции работают). При этом 2 машины из 6 имеют почти нулевые оси. Понятно, что есть привязка к установленной Qt.
Записан

Эвтаназия - наше хобби!
SASA
Гость
« Ответ #10 : Январь 30, 2010, 11:44 »

Понятно, что есть привязка к установленной Qt.

Нет. Надо правильно разворачивать приложение. Мой пример с SQLite. Радотает везде

-imageformats\qjpeg4.dll
                   \ ...
                   \qico4.dll
-sqldrivers\qsqlite4.dll
-QtSql4.dll
-QtCore4.dll
-QtGui4.dll
-QtNetwork4.dll
-myApp.exe

Сложнее, если вам надо использовать бинарники из qt, например, ассистант. Прииходиться писать qt.conf.

P.S. Плюс надо поставить студийные дллки - vcredist_x86.exe.
P.S.S Почитайте ссылку, которую я дал. Там всё по-русски.
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #11 : Январь 30, 2010, 13:05 »

Спасибо! На днях поставлю Qt на другую машину, и сделаю конфиг по всем правилам. Надеюсь, заработает...
Да скачай ты виртуал-бокс да поставь на свою машину чистую ось под него да потренируйся.
Виртуалки затем и придумали.
А зачем?
Для теста и выяснения чего её надо, а на зломученья пользователей.
ладно, я пас.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« Ответ #12 : Январь 30, 2010, 18:04 »

Нет. Надо правильно разворачивать приложение. Мой пример с SQLite. Радотает везде

-imageformats\qjpeg4.dll
                   \ ...
                   \qico4.dll
-sqldrivers\qsqlite4.dll
-QtSql4.dll
-QtCore4.dll
-QtGui4.dll
-QtNetwork4.dll
-myApp.exe

Сложнее, если вам надо использовать бинарники из qt, например, ассистант. Прииходиться писать qt.conf.


Спасибо! Все, о чем написано в статье, сделал. Правда, пока не ставил vcredist_x86.exe. Сейчас попробую.

P.S. Увы, не помогло. :-(
« Последнее редактирование: Январь 30, 2010, 19:24 от PinkPanther » Записан

Эвтаназия - наше хобби!
SABROG
Гость
« Ответ #13 : Январь 31, 2010, 12:14 »

А на других при открытии базы выдает ошибку

Какую?
Записан
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« Ответ #14 : Январь 31, 2010, 18:29 »

А на других при открытии базы выдает ошибку

Какую?

Код:
bool dbase::createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase(QObject::tr("QSQLITE"));
db.setDatabaseName(QObject::tr("XXXXX"));

db.setUserName(QObject::tr("YYYYY"));
db.setHostName(QObject::tr("Home"));
db.setPassword(QObject::tr("ZZZZZ"));
if(!db.open())
{
Messages::showError(QObject::tr("Ошибка открытия базы:\nНе могу открыть базу данных 'XXXXX'."));
return false;
}
return true;
}

Сначала выкидывает эту ошибку (это ф-ция инициализации базы, взятая почти под кальку у Шлее), притом выкидывает вне зависимости от того, есть ли в директории готовый файл базы, или нет. Потом прога ругается при создании таблиц, потом - при попытке обращений к базе, на запись и чтение. В общем, везде, где доступ к базе проверяется и где реализован вывод сообщения об ошибке. Привязки к каталогу нет - на рабочей машине свободно перемещаю экзешник, DLL-ы и базу, и все работает из любых мест.
(Messages - статический класс с функциями-макросами, которые выводят QMessageBox)
Записан

Эвтаназия - наше хобби!
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.054 секунд. Запросов: 23.