Название: Драйвер базы данных в Qt 4 Отправлено: bai от Май 13, 2007, 23:13 В тексте программы пытаюсь подключиться к базе данных:
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL"); db.setDatabaseName("db1"); db.setUserName("user"); db.setPassword("password"); db.open(); После сборки при запуске программы на консоль выдается следующее: QSqlDatabase: QPSQL driver not loaded QSqlDatabase: available drivers: QSqlQuery::exec: database not open Что делаю неправильно? Система FreeBSD 6.2, Qt 4.2.3 установлено из портов. Название: Драйвер базы данных в Qt 4 Отправлено: Racheengel от Май 13, 2007, 23:38 драйвер пересобрать и положить в .\sqldrivers
Название: Драйвер базы данных в Qt 4 Отправлено: Karl-Philipp от Май 13, 2007, 23:52 а как это пересобрать драйвер? У меня та же проблема, только с MySql.
Название: Драйвер базы данных в Qt 4 Отправлено: Racheengel от Май 14, 2007, 00:48 1. Ставишь MySql. Обычно становится он в c:\mysql.
2. Идешь в инсталляцию Qt\src\plugins\sqldrivers\mysql\ (например, это может быть C:\QT\4.2.2\src\plugins\sqldrivers\mysql). 3. Делаешь qmake, потом nmake. 4. В C:\QT\4.2.2\plugins\sqldrivers\ должен появиться файлик C:\QT\4.2.2\plugins\sqldrivers\qsqlmysql.dll, его то и копируешь в подкаталог .\sqldrivers твоего приложения. Какие могут быть грабли... Возможно, надо будет указать путь к mysql.h в путях компилятора (обычно к C:\mysql\include\) и к либе в путях линкера (C:\mysql\lib\opt\libmySQL.lib). Также придется кинуть C:\mysql\lib\opt\libmySQL.dll в каталог с твоей ехе-хой. Название: Драйвер базы данных в Qt 4 Отправлено: an9bit от Май 14, 2007, 01:35 У меня таже проблема с FreeBSD 6.2, QT 4.2.3 и QMYSQL
%./mysql QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: Пробовал добавлять QTPLUGIN += qsqlmysql в файл проекта, получается ещё хуже, но хоть что-то видно. Может вы сможите помочь определить чего не хватает для сборки. mysql.pro Код: TEMPLATE = app main.cxx Код: #include <QApplication> qsql.h Код: #ifndef aa_ При сборки происходит следующее Код: an9bit@bithome% qmake-qt4 -spec freebsd-g++ Подскажите в какую сторону копать пожалуйста. Уже сума схожу, не знаю что делать. 2 дня мучаюсь с этой проблемой. Нашел ещё такую вот информацию, но разобраться не смог http://lists.trolltech.com/qt-interest/2007-03/thread01218-0.html Название: Драйвер базы данных в Qt 4 Отправлено: Racheengel от Май 14, 2007, 10:46 надо собрать сам плугин.
проект в Qt\src\plugins\sqldrivers\mysql. зайди туда. сделай qmake и make. Название: Драйвер базы данных в Qt 4 Отправлено: an9bit от Май 14, 2007, 11:20 Racheengel, Qt - это дириктория установки или какая?
Название: Драйвер базы данных в Qt 4 Отправлено: Racheengel от Май 14, 2007, 11:31 да, именно так
например, c:\qt\4.2.3 я помню, тоже долго долбался с mySql, пока не догадался драйвер перекомпилить. Дело в том, что если меняешь версию мускля, то надо соответствующий драйвер иметь. Только для этой версии собранный заново. Название: Драйвер базы данных в Qt 4 Отправлено: zlatko от Май 14, 2007, 11:31 Цитата: "an9bit" Racheengel, Qt - это дириктория установки или какая? Угу, она же cис переменная $(QTDIR) Название: Драйвер базы данных в Qt 4 Отправлено: an9bit от Май 14, 2007, 11:40 Ура! Я это сделал! Спасибо большое Racheengel и zlatko.
Если у кого-то будут такие проблемы с freebsd то вот ршение: Если библиотека qt4 установлена из портов #cd /tmp && tar xf /usr/ports/distfiles/KDE/qt-x11-opensource-src-4.2.3.tar.gz #cd qt-x11-opensource-src-4.2.3/src/plugins/sqldrivers/mysql #qmake-qt4 -spec freebsd-g++ добавляем в Makefile в INCPATH путь к библиотекам mysql (-I/usr/local/include/mysql) #make плагин сразу ствится /plugins/sqldriver копируем вирикторий sqldriver в папку своего проекта и все должно заработать. Ещё раз огромное спасибо Racheengel. Также выражаю свою благодаронсть товарисчу redbeard. Название: Драйвер базы данных в Qt 4 Отправлено: bai от Май 14, 2007, 11:52 Так получается что в каждый проект нужно копировать драйвера?
Зачем тогда они устанавливаются в /usr/local/lib/plugins/sqldriver? Название: Драйвер базы данных в Qt 4 Отправлено: Karl-Philipp от Май 14, 2007, 15:41 Цитата: "Racheengel" 1. Ставишь MySql. Обычно становится он в c:\mysql. 2. Идешь в инсталляцию Qt\src\plugins\sqldrivers\mysql\ (например, это может быть C:\QT\4.2.2\src\plugins\sqldrivers\mysql). 3. Делаешь qmake, потом nmake. 4. В C:\QT\4.2.2\plugins\sqldrivers\ должен появиться файлик C:\QT\4.2.2\plugins\sqldrivers\qsqlmysql.dll, его то и копируешь в подкаталог .\sqldrivers твоего приложения. Также придется кинуть C:\mysql\lib\opt\libmySQL.dll в каталог с твоей ехе-хой. 1. Поставил MySql (С:\MySql) 2. В консоли выполнил: cd %QTDIR%\src\plugins\sqldrivers\mysql qmake -o Makefile "INCLUDEPATH+=C:\MySQL\include" "LIBS+=C:\MySQL\lib\opt\libmysql.lib" mysql.pro nmake 3. Из %QTDIR%\plugins\sqldrivers взял файлик qsqlmysql.dll и скопировал его в каталог sqldrivers, который создал в каталоге проекта. На всякий случай сделал такой же (sqldrivers) каталог в каталоге с ехе-шником. 4. А также кинул файлик C:\mysql\lib\opt\libmySQL.dll в каталог с ехе-хой. В конце компиляции программы - окошко "Database Error" с сообщением driver not loaded driver not loaded Подскажите, пожалуйста, как быть? версия Qt 4.1.4. файл проекта CONFIG += qt QT += sql SOURSES += main.cpp код: Код: #include <QtSql> Название: Драйвер базы данных в Qt 4 Отправлено: an9bit от Май 14, 2007, 16:18 to bai
Теперь я уже не знаю зачем они ставятся. Ибо этот файл qsqlmysql.so скопировал в /usr/local/lib/plugins/sqldrivers и в дирикторию проэкта добовлять его не надо. Видать плагины как-то косячно собираются. Название: Драйвер базы данных в Qt 4 Отправлено: bai от Май 14, 2007, 20:54 Спасибо всем ответившим. Помогла пересборка драйвера.
Хотя считаю странным тот факт, что происходит кривая сборка драйвера при установке из портов. Название: Драйвер базы данных в Qt 4 Отправлено: Racheengel от Май 14, 2007, 21:40 Karl-Philipp:
Цитировать В конце компиляции программы - окошко "Database Error" с сообщением driver not loaded driver not loaded Это окошко при компиляции появиться не может - только при выполнении приложения. Также непонятно вот это: Цитировать взял файлик qsqlmysql.dll и скопировал его в каталог sqldrivers, который создал в каталоге проекта. На всякий случай сделал такой же (sqldrivers) каталог в каталоге с ехе-шником. Что есть каталог проекта? Надо создавать sqldrivers в каталоге с exe-файлом программы. Вообще по идее все сделано верно, должно работать. bai: Да нет, просто драйвер необходимо пересобирать под конкретную версию MySql. При инсталляции это не проверяется. Название: Драйвер базы данных в Qt 4 Отправлено: bai от Май 14, 2007, 23:31 Racheengel:
Цитировать bai: Да нет, просто драйвер необходимо пересобирать под конкретную версию MySql. При инсталляции это не проверяется. Вот как раз при инсталляции, если в системе не установлен клиент соответствующей СУБД, устанавливается нужный клиент как зависимость. Я имею ввиду установку из портов во FreeBSD. Название: Драйвер базы данных в Qt 4 Отправлено: Racheengel от Май 14, 2007, 23:41 Цитировать устанавливается нужный клиент как зависимость Цитировать установку из портов Не понял, честно говоря, о чем речь. Название: Драйвер базы данных в Qt 4 Отправлено: bai от Май 14, 2007, 23:49 Цитата: "Racheengel" Цитировать устанавливается нужный клиент как зависимость Цитировать установку из портов Не понял, честно говоря, о чем речь. Речь идет об установке софта, в частности Qt 4.2.3, из портов во FreeBSD Название: Драйвер базы данных в Qt 4 Отправлено: Karl-Philipp от Май 15, 2007, 00:52 возможно я делаю что-то не так, но вот что у меня получается:
1. Создал директорию sql (D:\Qt projects\sql), в которой создал файл с кодом, приведенным мною выше. 2. Создал файл main.cpp и сохранил в директории sql. 3. С помощью MySQL создал базу, а в ней таблицу, затем скопировал их из директории c:\MySql\data\base\ директорию D:\Qt projects\sql. 4.создал файл проекта sqlproject c содержимым, описанным выше. 5. Выполнил следующие команды в консоли: D:\Qt projects\sql>vsvars32 Setting environment for using Microsoft Visual Studio .NET tools. (If you also have Visual C++ 6.0 installed and wish to use its tools from the command line, run vcvars32.bat for Visual C++ 6.0.) D:\Qt projects\sql>qmake -tp vc -o sqlproject.vcpro sqlproject.pro D:\Qt projects\sql> перешёл в VS, загружаю файл проекта sqlproject.vcpro, нажимаю F7, получаю логи: ------ Build started: Project: sqlproject, Configuration: Debug Win32 ------ Compiling... main.cpp Linking... Build log was saved at "file://d:\Qt projects\sql\debug\BuildLog.htm" sqlproject - 0 error(s), 0 warning(s) ---------------------- Done ---------------------- Build: 1 succeeded, 0 failed, 0 skipped 6. Создал каталог sqldrivers в каталоге debug (D:\Qt projects\sql\debug, в котором появился ехе-шник). Скопировал в каталог sqldrivers библиотеку qsqlmysql.dll, скомпилированную предварительно (см. сообщение выше). 7. Скопировал в каталог с ехе-шником (в debug) файл C:\mysql\lib\opt\libmySQL.dll 8. Запускаю ехе-шник и появляестя окошко "Database Error" с сообщением driver not loaded driver not loaded Может чего начудил с каталогами? Или с самим проектом? Название: Драйвер базы данных в Qt 4 Отправлено: Racheengel от Май 15, 2007, 08:58 Попробуй сделай подкаталог типа bin, положи туда ехе и libmySQL.dll, в нем создай sqldrivers и туда qsqlmysql.dll.
И проследи, чтобы все собиралось либо чисто в релизе, либо чисто в дебуге. Потому что смотри - у тебя ехе по идее в дебаге собрано, а C:\mysql\lib\opt\libmySQL.dll - это релизная либа. Да и qsqlmysql.dll у тебя тоже сделана в релизе (дебажная будет еще d на конце иметь). Попробуй примеры покомпились и позапускать, должно работать... Название: Драйвер базы данных в Qt 4 Отправлено: Karl-Philipp от Май 15, 2007, 11:10 похоже я понял в чём проблема: вместо файла libmySQL.dll из директории C:\mysql\lib\opt\ использовал файл libmySQL.lib
Прошу прощения за невнимательность. В директории C:\mysql\lib\opt\ был только файл libmySQL.lib, а как из него можно получить libmySQL.dll? Название: Драйвер базы данных в Qt 4 Отправлено: Racheengel от Май 15, 2007, 11:23 У меня и dll тоже там.
А еще в C:\mysql\bin\ копия лежит. Название: Драйвер базы данных в Qt 4 Отправлено: Karl-Philipp от Май 15, 2007, 20:16 Racheengel,
спасибо большое за терпение и исчерпывающие ответы. Мне удалось найти ошибку в файле имя_проекта.pro: CONFIG += qt QT += sql SOURSES += main.cpp я сделал ошибку, написав слово SOURSES вместо SOURСES век живи, век учись... Название: Драйвер базы данных в Qt 4 Отправлено: Racheengel от Май 15, 2007, 23:16 рад был помочь, хорошо что все ок.
|