Qpsql driver not loaded что делать
насчет Driver not loaded, может быть несколько причин.
1. Просмотрите есть ли все используемые драйвером библиотеки (libpq.dll и все с ним связанные, а так же vc redistr из установщика PostgresSQL). Это легче делать какой нибудь утилитой просмотра зависимостей библиотек.
2. Просмотрите в каких папка ваша прога ищет драйвер QApplication.libraryPaths(), а вообще попробуйте в директории с программой создать папку sqldrivers (или plugins/sqldrivers) и поместить туда драйвер.
Ваш рецепт мне, к сожалению, не помог.
У меня make - вообще отсутствует в системе. Есть только mingw32-make.
Попытка запуска " mingw32-make -f Makefile.Debug all " привела к ошибке ". /mingw32/bin/ld.exe: cannot find -lpq "
Подскажите, куда рыть ?
Пару примеров таких утилит, если не трудно.
вот вам простой make который использовался в более ранних версиях qt, поместите его в bin папке qt.
__________________
How to Build the QPSQL Plugin on Windows
Install the appropriate PostgreSQL developer libraries for your compiler. Assuming that PostgreSQL was installed in C:\psql, build the plugin as follows:
cd %QTDIR%\src\plugins\sqldrivers\psql
qmake "INCLUDEPATH+=C:\psql\include" "LIBS+=C:\psql\lib\ms\libpq.lib" psql.pro
nmake
__________________
в ассистенте есть подробная информация о том как собрать драйвер на различных системых.
без заголовочных файлов драйвер собрать не получится.
насчет примеров утилит под винду не помню (но точно помню что в нете есть что-то бесплатное, когда-то пользовался, погуглите) , под линуху стандартный ldd.
драйвер правильно загрузится лишь когда все используемые им библиотеки будут или в system32 или в папке программы. проверьте зависимости. когда все зависимости будут решены, можно будет решать куда его совать, это вам подскажет QApplication::libraryPaths();
@echo off
mingw32-make %*
Почему нет, можно и так :)
Install the appropriate PostgreSQL developer libraries for your compiler. Assuming that PostgreSQL was installed in C:\psql, build the plugin as follows:
cd %QTDIR%\src\plugins\sqldrivers\psql
qmake "INCLUDEPATH+=C:\psql\include" "LIBS+=C:\psql\lib\ms\libpq.lib" psql.pro
nmake
__________________
Видать давно Троли постргесс не ставили.
Ну нет там такой поддиректории . \ms\.
Там просто C:\psql\lib\libpq.lib
Эх, кабы знать как проверить, то мыбы ух!
На борту: Win, QtSDK 4.8.1. Если у кого есть правильные исходники -очень прошу - выложите, пожалуйста. Буду рад и готовому драйверу, но не халявщик в душе и соберу сам. )
Исходники, выдающие ошибки приложил к посту.
Как собирать "драйвера" для QT SQL написано тут:
""How to Build the QPSQL Plugin on Windows
Install the appropriate PostgreSQL developer libraries for your compiler. Assuming that PostgreSQL was installed in C:\psql, build the plugin as follows:
cd %QTDIR%\src\plugins\sqldrivers\psql
qmake "INCLUDEPATH+=C:/psql/include" "LIBS+=C:/psql/lib/ms/libpq.lib" psql.pro
nmake"'
Мои действия:
1. PostgreSQL установлен в директорию: С:\psql\
2. Смысла делать cd %QTDIR%\src\plugins\sqldrivers\psql не вижу, так как у меня отсутствует данная директория )
делаю cd С:\src - исходники старого драйвера мне принес приятель. И мы оба не понимаем - должны они подходить для данной платформы или нет. ) Если есть исходники, которые 100% корректные для QtSDK 1.2.1 и Postgre 9.3. - прошу выложить или кинуть линк (Низкий поклон. )
3.nmake - с чем его едят, файл с каким названием отвечает за данную операцию (qmake - minqw32-. exe) и надо ли путь к nmake прописывать в переменную окружения Оси?
Тогда не nmake , а make или gmake.
Это директория с исходнимами "драйвера" SQL для Postgres.
Если у тебя её нет, то что ты собираешься собирать -- не понятно.
Если ты будешь собирать исходники старого "драйвера" для нового QT, получится полная хрень.
Тебе надо собирать "драйвер" из исходников именно того QT, который ты собираешься использовать.
Его не нужно искать, он лежит в исходниках QT, которые тольконадо попросить установить (или доустановить)
при установке.
Последние QT ставятся вообще из интернета инсталером, там это очень легко доставить.
Pupil__ |
---|
И мы оба не понимаем - должны они подходить для данной платформы или нет. ) Если есть исходники, которые 100% корректные для QtSDK 1.2.1 и Postgre 9.3. - прошу выложить или кинуть линк (Низкий поклон. ) |
QtSDK 1.2.1 -- это что за зверь ? сейчас QT 5.3.1 последний.
Pupil__ |
---|
3.nmake - с чем его едят, файл с каким названием отвечает за данную операцию (qmake - minqw32-. exe) и надо ли путь к nmake прописывать в переменную окружения Оси? |
При попытке собрать в консоли - также не проходит сборка
Напиши полностью, что делал, какую комманду запускал, и весь её вывод.
Если он большой, выдели одну ошибку характерную, но так, чтобы её текст был виден целиком, лучше прихватить чуть больше информации, чем обрезать.
Пока это похоже на использование неверных конфигураций -- собираешь для QT в виде DLL, а исползуешь библиотеки от static lib или наоборот.
Pupil__ |
---|
Или мне весь Qt 4.8.1 полностью пересобрать из сорцов? |
Напиши полностью, что делал, какую комманду запускал, и весь её вывод.
Если он большой, выдели одну ошибку характерную, но так, чтобы её текст был виден целиком, лучше прихватить чуть больше информации, чем обрезать.
Среда разработки этого проекта (решения):
(1) Операционная система: Windows10
(4) Версия QtCreator: 4.11.0
Проанализировать причину «QSqlDatabase: драйвер QMYSQL не загружен»
(1) Модуль Qt SQL использует подключаемый модуль драйвера для связи с различными API баз данных.
(2) Поддерживаются следующие базы данных:
Driver name | DBMS |
---|---|
QDB2 | IBM DB2 (version 7.1 and above) |
QIBASE | Borland InterBase |
QMYSQL | MySQL (version 5.0 and above) |
QOCI | Oracle Call Interface Driver |
QODBC | Open Database Connectivity (ODBC) - Microsoft SQL Server and other ODBC-compliant databases |
QPSQL | PostgreSQL (versions 7.3 and above) |
QSQLITE2 | SQLite version 2Note: obsolete since Qt 5.14 |
QSQLITE | SQLite version 3 |
QTDS | Sybase Adaptive ServerNote: obsolete since Qt 4.7 |
Скомпилировать драйвер MySQL
(1) Скомпилируйте драйвер
Проверьте путь установки Qt на компьютере: E: \ ProgramData \ Qt \ Qt5.14.1 \ 5.14.1 \ mingw73_64 \ plugins \ sqldrivers подключаемый модуль sqldrivers, как показано ниже
[Не удалось передать изображение по внешней ссылке. На исходном сайте может быть механизм защиты от хотлинкинга. Рекомендуется сохранить изображение и загрузить его напрямую (img-j5HUM609-1583739250397) (C: \ Users \ AdminCode \ AppData \ Roaming \ Typora \ typora-user-images \ image-20200309150658854.jpg)]
Обнаружено, что нет подключаемого модуля драйвера, связанного с MySQL.
Исходная версия Qt5.13 не включает плагин драйвера для управления MySQL, поэтому вам нужно скомпилировать плагин самостоятельно. Процесс компиляции плагина выглядит следующим образом:
1. Используйте QtCreator, чтобы открыть проект mysql.pro E:\ProgramData\Qt\Qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers\mysql
Откройте файл проекта (исходное содержимое) следующим образом.
Модификация элемента управления выглядит следующим образом
Дайте код, скопируйте и замените самостоятельно
Скомпилируйте программу после ее добавления (примечание: здесь используется бит MinGw64)
После успешной компиляции E:\ProgramData\Qt\Qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers\mysql Под каталогом будет дополнительный каталог lib
2. Скопируйте эти три файла в E:\ProgramData\Qt\Qt5.14.1\5.14.1\mingw73_64\plugins\sqldrivers в
(2) Добавить пакет расширения MySql
Задача
Заставить приложение запускаться и подключаться к СУБД PostgreSQL на машине без установленного Qt и PostgreSQL.
Анализ
Как в общих чертах происходит работа с БД в Qt:
QSqlDatabase::addDatabse живет в Qt5Sql.dll, и при вызове пытается динамически подгрузить qsqlpsql.dll, который тянет за собой кучу других dll, часть из которых живет в составе PostgreSQL.
Решение
Прекрасная программа DependencyWalker позволяет проследить все дерево зависимостей от Qt5Sql.dll и от qsqlpsql.dll. Рассмотрим по порядку.
Qt5Sql.dll
Тут все просто. Если Ваша тестовая (или не очень) программа скомпилировалась и запустилась, то все зависимости Qt5Sql.dll удовлетворены по определению и все хорошо.
Поиск драйвера
Если QSqlDatabase::drivers среди прочего выдает QPSQL, то все хорошо, файл qsqlpsql.dll доступен.
Если нет, то его следует положить в папку "каталог_с_exe_файлом/plugins/sqldrivers/".
Взять драйвер qsqlpsql.dll можно примерно в "C:\Qt\5.5.1\mingw491_32\bin\plugins\sqldrivers" -- точное положение зависит от версии Qt (в общем, поищите поиском). Если драйвера нет, то его следует собрать самому из исходников (инструкции есть в гугле).
Если Вы все еще тут, значит при попытке подключения к БД получается ошибка "driver not loaded" -- значит процесс загрузки драйвера с его зависимостями провалился и проблема в том, что не ясно, из-за чего именно это произошло, поэтому идем дальше.
qsqlpsql.dll
Тут интереснее. qsqlpsql.dll, кроме прочего, зависит от библиотек, входящих в состав PostgreSQL. Значит надо сделать так, чтобы они были видны в момент загрузки драйвера.
Варианты:
- если установлен PostgreSQL, то можно добавить в системную переменную PATH путь к папке bin, находящейся внутри каталога установки PostgreSQL;
- если нет, то нужно раздобыть необходимые dll из состава PostgreSQL и положить их рядом с Вашим exe-файлом (именно рядом, а не в каких-либо подпапках).
В обоих случаях надо учитывать, что разрядность библиотек PostgreSQL должна соответствовать разрядности Qt и вашего приложения в частности. Т.е. если у Вас 32-разрядное приложение, то и dll надо брать из 32-разрядной версии PostgreSQL.
(при этом, естественно, не имеет значения разрядность сервера СУБД PostgreSQL, к которому Ваше приложение пытается подключиться)
Из установленного PostgreSQL нужно позаимствовать следующие библиотеки:
libpq.dll
ssleay32.dll
libeay32.dll
libintl-8.dll
libiconv-2.dll
Рекомендую пройтись DependencyWalker'ом от qsqlpsql.dll и libpq.dll чтобы быть уверенным, что в новых версиях PostgreSQL не появились новые зависимости.
Что еще
возможно, Вам, как и мне, потребуется откуда-то добыть msvcr120.dll (или что-то вроде того в новых версиях Windows, PostgreSQL, Qt) и тоже бросить рядом с вашим exe-файлом.
Итого
У меня получилась следующая структура каталога простой программы с GUI, выполняющей подключение к БД:
Он говорит что QMYSQL не установлен, а потом сам же его предлагает.
Подключение к базе соответственно не проходит. Подскажите что делать.
- libqsqlite.so
- libqsqlmysql.so
- libqsqlpsql.so
То, о чем уже говорилось в другом вопросе:
Cannot load library /opt/Qt/5.5/gcc_64/plugins/sqldrivers/libqsqlmysql.so: (libmysqlclient_r.so.16: невозможно открыть разделяемый объектный файл: Нет такого файла или каталога)"
Установим libmysqlclient нужной версии:
Нет нужных dll. Удостоверимся, что libssl установлен:
Это наверно лишнее:
Вместе с MySQL поставляется библиотека клиента, путь к которой нужно добавить в переменную окружения Path (или скопировать в папку, уже добавленную в Path). Где в Linux хранится данная библиотека, к сожалению не знаю. Плагины собирать вручную не надо, в этой версии qt они уже собраны.
Мне помогло установить библиотеку с драйвером mysql for qt5
У меня проблема решилась установкой XAMPP, ничего не прописывал, видимо система сама прописала путь в переменную среды. Но на остальных система ( я ставил на все ( Windows, OS X ) ) проблема так и не решилась.
Читайте также: