Название: Ошибка QMYSQL driver not loaded Отправлено: useruser от Ноябрь 27, 2013, 16:29 Код: QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); Пишет в дебагере QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QSqlQuery::exec: database not open Какой драйвер и куда он хочет?) ОС Windows 7. До смены хостинга такого не писал. Поменял хостинг (может другая версия mysql??-хотя и тут и там 5я) и написал эту ошибку. Файлы libmysql.dll и libmysql.lib для этой БД mysql у меня есть. Название: Re: Ошибка QMYSQL driver not loaded Отправлено: kibsoft от Ноябрь 27, 2013, 17:07 http://qt-project.org/doc/qt-4.8/sql-driver.html#qmysql
Название: Re: Ошибка QMYSQL driver not loaded Отправлено: useruser от Ноябрь 27, 2013, 17:45 В предлагаемой статье ответа на мой вопрос нет.
Название: Re: Ошибка QMYSQL driver not loaded Отправлено: Majestio от Ноябрь 27, 2013, 18:30 Файлы libmysql.dll и libmysql.lib для этой БД mysql у меня есть. Для использования MySQL - драйвер нужно предварительно собрать. В рамках Qt он именуется плагином. В линке, что давали ранее - есть вся инфа по сборке этого плагина (драйвера). Судя по твоим логам - этого плагина (драйвера) у тебя нет, читай "не собирал". Название: Re: Ошибка QMYSQL driver not loaded Отправлено: lesav от Ноябрь 27, 2013, 18:40 Судя по твоим логам - этого плагина (драйвера) у тебя нет, читай "не собирал". Ну не надо так категорично! Еще такая ошибка может возникать если программа не находит нужную библиотеку libmysql.dll в %PATH%. Название: Re: Ошибка QMYSQL driver not loaded Отправлено: Majestio от Ноябрь 27, 2013, 18:45 Судя по твоим логам - этого плагина (драйвера) у тебя нет, читай "не собирал". Ну не надо так категорично! Еще такая ошибка может возникать если программа не находит нужную библиотеку libmysql.dll в %PATH%. Безусловно. Но топикстартер упомянул "Файлы libmysql.dll и libmysql.lib для этой БД mysql у меня есть", а про плагин си сном ни духом. Вывод? Название: Re: Ошибка QMYSQL driver not loaded Отправлено: useruser от Ноябрь 27, 2013, 21:02 Спорить о том, что драйверы можно собирать или писать самому, я не буду.
Но тут есть 3 но: 1) С другим хостингом работало. Ничего не удалял, переустанавливал. Где драйвер? Самоудалился? Загадка.) 2) База данных и на старом и на новом хостинге MySQL 5. Какая 5 (версия) - не смотрел. А QT работает с этой БД-так написано в статье. 3) Собирать или писать драйвер под одну из самых распостраненных в мире баз данных, установленную на любом хостинге, входящую в LAMP любого линукса, для систем Windows или Linux -это "не есть правильно". А для Windows систем -абсурд. Для таких, типовых задач, драйвер должен быть. И в большинстве сред разработки он есть, либо его можно скачать. Название: Re: Ошибка QMYSQL driver not loaded Отправлено: Majestio от Ноябрь 27, 2013, 21:18 Спорить о том, что драйверы можно собирать или писать самому, я не буду. Но тут есть 3 но: 1) С другим хостингом работало. Ничего не удалял, переустанавливал. Где драйвер? Самоудалился? Загадка.) 2) База данных и на старом и на новом хостинге MySQL 5. Какая 5 (версия) - не смотрел. А QT работает с этой БД-так написано в статье. 3) Собирать или писать драйвер под одну из самых распостраненных в мире баз данных, установленную на любом хостинге, входящую в LAMP любого линукса, для систем Windows или Linux -это "не есть правильно". А для Windows систем -абсурд. Для таких, типовых задач, драйвер должен быть. И в большинстве сред разработки он есть, либо его можно скачать. А Б И С Ь Н Я Ю ;D 1) Драйвера MySQL в поставке Qt в собранном виде нет, так решили. Нужно собирать самому. 2) Qt работает уверенно с MySQL. 3) Рассуждение неправильное! Хотите драйвер MySQL - получите. Для этого найдите его исходник в поставке, скомпилируйте, соберите в DLL, положите в нужное вам место ... ну и все. Давай твой драйвер компилировать и подключать, ланна? :) Название: Re: Ошибка QMYSQL driver not loaded Отправлено: Alex Custov от Ноябрь 27, 2013, 21:23 1) С другим хостингом работало. Ничего не удалял, переустанавливал. Где драйвер? Самоудалился? Загадка.) Ты не привёл полную иерархию файлов и каталогов твоей программы, мы не знаем был он у тебя вообще или нет. 2) База данных и на старом и на новом хостинге MySQL 5. Какая 5 (версия) - не смотрел. А QT работает с этой БД-так написано в статье. Работает, конечно. Через SQL плагин 3) Собирать или писать драйвер под одну из самых распостраненных в мире баз данных, установленную на любом хостинге, входящую в LAMP любого линукса, для систем Windows или Linux -это "не есть правильно". А для Windows систем -абсурд. Для таких, типовых задач, драйвер должен быть. И в большинстве сред разработки он есть, либо его можно скачать. Qt - это не среда разработки, не путай с RAD типа Delphi. Название: Re: Ошибка QMYSQL driver not loaded Отправлено: lesav от Ноябрь 27, 2013, 21:34 Если ничего не делал, и отвалилось по вине хостера то для решения задачи не хватает полной картины. У меня есть несколько вопросов.
Я так понял пользователь сидит в ОС Windows на локальной машине (не на хосте)
Если все на месте, проверить зависимость драйвера от сторонних библиотек. Например Dependency Walker (http://www.dependencywalker.com/)-ом Для UNIX
Если все на месте, проверить зависимость драйвера от сторонних библиотек команда ldd -v $QT_INSTALL_PLUGINS/plugins/sqldrivers/qsqlmysql4.so (переменная QT_INSTALL_PLUGINS может быт не установлена, в этом случае перейти в каталог с драйвером и выполнить ldd -v ./qsqlmysql4.so) Название: Re: Ошибка QMYSQL driver not loaded Отправлено: Majestio от Ноябрь 27, 2013, 21:38 Все совершенно верно на 100%.
За исключением одного - исходный код драйвера (плугина) уже есть в поставке Qt. И работает для всех платформ. Одно "но" - он по сути "прослойка". Нужен он и специфические библиотеки MySQL (сам работаю с PostgreSQL, а там именно так). Название: Re: Ошибка QMYSQL driver not loaded Отправлено: Majestio от Ноябрь 27, 2013, 21:43 Если ничего не делал, и отвалилось по вине хостера то для решения задачи не хватает полной картины. У меня есть несколько вопросов. Я так понял пользователь сидит в ОС Windows на локальной машине (не на хосте)
Если все на месте, проверить зависимость драйвера от сторонних библиотек. Например Dependency Walker (http://www.dependencywalker.com/)-ом Для UNIX
Если все на месте, проверить зависимость драйвера от сторонних библиотек команда ldd -v $QT_INSTALL_PLUGINS/plugins/sqldrivers/qsqlmysql4.so (переменная QT_INSTALL_PLUGINS может быт не установлена, в этом случае перейти в каталог с драйвером и выполнить ldd -v ./qsqlmysql4.so) Сорри ... много букваф :) Сообщение: Цитировать QSqlDatabase: QMYSQL driver not loaded говорит о том, что этот драйвер по какой-то причине не грузится (если он есть). Надо искать причины.QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 Название: Re: Ошибка QMYSQL driver not loaded Отправлено: lesav от Ноябрь 27, 2013, 21:48 Сорри ... много букваф :) ....... говорит о том, что этот драйвер по какой-то причине не грузится (если он есть). Надо искать причины. Дык а я о чем кашляю!!! В тех моногоБакавах (http://www.prog.org.ru/index.php?topic=26068.msg186580#msg186580) заложен механизм поиска причин! Название: Re: Ошибка QMYSQL driver not loaded Отправлено: Majestio от Ноябрь 27, 2013, 21:54 Дык а я о чем кашляю!!! В тех моногоБакавах (http://www.prog.org.ru/index.php?topic=26068.msg186580#msg186580) заложен механизм поиска причин! И самая главная ... а есть ли драйвер вааще? :)Название: Re: Ошибка QMYSQL driver not loaded Отправлено: SuleymanStalskiy от Май 23, 2014, 10:09 Подскажите пожалуйста.
Если QT не собран из исходников, а просто установлен из "Qt 5.3.0 for Windows 32-bit (MinGW 4.8.2, OpenGL, 734 MB)". Можно ли в таком случае уже потом собирать драйвер для MYSQL (просто скачав исходники Qt с сайта и запустив сборку драйвера) или надо обязательно собрать Qt из исходников? Название: Re: Ошибка QMYSQL driver not loaded Отправлено: shame от Май 23, 2014, 22:03 Можно
Название: Re: Ошибка QMYSQL driver not loaded Отправлено: 8Observer8 от Май 30, 2014, 07:56 Имею "Qt 5.3.0 for Windows 32-bit (MinGW 4.8.2, OpenGL, 734 MB)"
Смотрите. Я выполняю команду QSqlDatabase::drivers(): Код
Выдаётся список: Цитировать "QSQLITE" "QMYSQL" "QMYSQL3" "QODBC" "QODBC3" "QPSQL" "QPSQL7" Говорит ли это о том, что для работы с QMySQL (и для всех БД из списка) ничего дополнительно собирать и устанавливать не надо? Название: Re: Ошибка QMYSQL driver not loaded Отправлено: lesav от Май 30, 2014, 09:21 Это говорит только о том, что у Qt есть некие драйверы которые Вы можете использовать. Но!
Для работы драйверов нужны клиентские библиотеки (.so|.dll) Далее просто клиент QMYSQL - libmysql QPSQL - libpq QOCI - установленный клиент Oracle (это не только библиотека oci но и туева хуча файлов библ и директорий на ~500Мб ) QIBASE - fbclient этот список можно продолжить. Еще несколько важных моментов. Вам нужен клиент той разрядности, что и Qt. Другими словами: У вас Qt не x64. И Вам нужно подсоединиться к 64-битной БД. Не нужно использовать x64 клиента. Используйте i386 При работе с MySQL необходимо использовать клиента с версией соответствующей версии БД. Это огромный минус, т.к. у вас пропадает возможность одновременного подсоединения к разным версиям БД. Но использование odbc решает эту проблему. Название: Re: Ошибка QMYSQL driver not loaded Отправлено: 8Observer8 от Май 30, 2014, 09:36 Спасибо! Ещё есть несколько вопросов. Правильно ли я думаю, что для использования MySQL мне надо скачать исходники клиента, собрать libmysql.a и в файле .pro написать: LIBS += "path/to/libmysql.a"?
Почему я могу использовать базу данных SQLite без проблем? Получается, что клиент поставляется в комплекте? Это единственный клиент, который поставляется вместе с Qt? Название: Re: Ошибка QMYSQL driver not loaded Отправлено: carrygun от Май 30, 2014, 10:26 Потому что драйвер SQLite есть в Qt из коробки. Если ты соберешь драйвер для MySQL то надо будет положить драйвер в папку с плагинами, а цепляться он будет из pro файла QT += sql, а в программе уже QSqlDatabase::addDatabase("QMYSQL");
Название: Re: Ошибка QMYSQL driver not loaded Отправлено: 8Observer8 от Май 30, 2014, 10:40 Теперь понял! Спасибо! :)
Название: Re: Ошибка QMYSQL driver not loaded Отправлено: lesav от Май 31, 2014, 07:58 Если QT не собран из исходников, а просто установлен ..... Можно ли в таком случае уже потом собирать драйвер для MYSQL ... ? Ставьте Qt (в Qt 5.*.* при установке поставить галочку на Source) И собирайте на здоровье! Проблем быть не должно! Qt5 в своем составе уже имеет драйвер MYSQL Название: Re: Ошибка QMYSQL driver not loaded Отправлено: SuleymanStalskiy от Июнь 11, 2014, 11:43 Добрый день, понимаю, что тема обсосана до блеска, но все-таки, не знаю где искать косяк.
1. Скачал qt 5.3 offline 32 bit, установил в C:\Qt 2. Скачал src 5.3. скопировал в C:\Qt\Qt5.3.0\sourses 3. Установил MySql 6.0 32bit (путь без пробелов) 4. Прописал пути в переменной PATH для C:\Qt\Qt5.3.0\5.3\mingw482_32; C:\Qt\Qt5.3.0\5.3\mingw482_32\bin; C:\Qt\Qt5.3.0\5.3\mingw482_32\lib; C:\MySQL_Server_6_0\lib\opt; 5. выполнил cd C:\Qt\Qt5.3.0\sourses\qtbase\src\plugins\sqldrivers\mysql qmake "INCLUDEPATH+=C:/MySQL_Server_6_0/include" "LIBS+=C:/MySQL_Server_6_0/lib/opt/libmysql.lib" mysql.pro mingw32-make.exe 6. в директории C:\Qt\Qt5.3.0\sourses\qtbase\plugins\sqldrivers получил 4 файла libqsqlmysql.a libqsqlmysqld.a qsqlmysql.dll qsqlmysqld.dll 7. скопировал .dll в C:\Qt\Qt5.3.0\5.3\mingw482_32\plugins\sqldrivers .a в C:\Qt\Qt5.3.0\5.3\mingw482_32\lib libmysql.dll из C:/MySQL_Server_6_0/lib/opt/libmysql в C:\Windows 8. .pro file добавил QT += sql; 9. запуск - ошибка QSqlDatabase: MYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 QSqlError("", "Driver not loaded", "Driver not loaded") Подскажите, куда копать дальше И еще. Я так понимаю, что Qt "ищет" dll не там где надо (ведь файлы же скомпилированы и лежат на компьютере). Существуют ли какие-нибудь программы, с помощью которых можно проследить, где моя программа (для соединения с MySQl) "ищет" драйвер? Название: Re: Ошибка QMYSQL driver not loaded Отправлено: Serr500 от Июнь 11, 2014, 11:59 libmysql.dll из C:/MySQL_Server_6_0/lib/opt/libmysql в C:\Windows В C:\Windows\System32 для 64-битной винды,в C:\Windows\SysWOW64 для 32-битной, или в C:\Qt\Qt5.3.0\5.3\mingw482_32\bin. Название: Re: Ошибка QMYSQL driver not loaded Отправлено: SuleymanStalskiy от Июнь 11, 2014, 12:08 Скопировал libmysql.dll из C:/MySQL_Server_6_0/lib/opt/libmysql
в C:\Windows\System32 для 64-битной винды, и в C:\Qt\Qt5.3.0\5.3\mingw482_32\bin не помогло Название: Re: Ошибка QMYSQL driver not loaded Отправлено: lesav от Июнь 12, 2014, 09:28 7. ..... Этот пункт лишний. libmysql.dll должен лежать в каталоге с вашей Qt программой, или в %QT%/bin или в %windir%/system32скопировал libmysql.dll из C:/MySQL_Server_6_0/lib/opt/libmysql в C:\Windows Существуют ли какие-нибудь программы, с помощью которых можно проследить есть Procmon (http://technet.microsoft.com/ru-ru/sysinternals/bb896645.aspx), он умеет все.есть еще dependencywalker (http://www.dependencywalker.com/), который проверяет зависимости от других библиотек. Проверьте им ваш драйвер qsqlmysql.dll Название: Re: Ошибка QMYSQL driver not loaded Отправлено: Bepec от Июнь 12, 2014, 12:02 Тема то хоть и обсосана и ссылок дофига, но много непонятного с последними версиями MySql. К примеру папочки opt у меня нет в MySql, как и дебажных lib :)
PS такое чуйство что всё специально запутано :D update: ну мелкие неприятности - сейчас нет каталога opt, а имеется libmysqld.lib/libmysql.lib. :) update: такая же проблемка - не грузит драйвер. Библиотека лежит в проекте, плагин видит. Вызывает ошибку "driver not load driver not load" :/ update: гениальная ошибка Цитировать QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QIBASE QSQLITE QMYSQL3 QMYSQL QODBC3 QODBC update: Finita. Название: Re: Ошибка QMYSQL driver not loaded Отправлено: Bepec от Июнь 12, 2014, 13:42 Второе сообщение чтоб вы предыдущие изыскания не читали.
То, что я пишу верно для Qt 4.7.2. Что делать: 1) скачать mysql-6.0.6-alpha-win32.zip с http://www.mysql.ru/download/ 2) далее по руководству - устанавливаем в папку без пробелов, прописываем пути к include. 3) в проекте прописываем пути к либкам (прямым путём, иначе запутается) Debug: MySqlServerDir/lib/debug/libmysql.lib Release: MySqlServerDir/lib/opt/libmysql.lib 4) собираем. У меня собралось с 1 попытки. 5) копируем получившиеся файлы в Qt***/plugins/sqldrivers/ Цитировать qsqlmysql4.dll 6) после копируем из MySqlServerDir/lib/opt/libmysql.dll в папку вашего проекта (или папку, прописанную в path) и наслаждаемся работой.qsqlmysql4.lib qsqlmysqld4.dll qsqlmysqld4.lib Гадости: 1) официальные версии mysql с mysql.com не собираются с воплями о undefined reference. 2) после матов и отвёртки они всё таки собираются, но отказываются подключать драйвер. В списке он присутствует, но не может быть подключен. PS ну вдруг кому полезно будет. |