В коробке QtCreator идёт без дров для MySQL пичалька…
Почему? Из-за несовместимости лицензий. Но мы можем их скомпилировать самостоятельно!
Для начала необходимо скачать MySQL
[tip]Обновил для MySQL 8.0 и Qt 5.14 (c 5.12 не соберётся!)[/tip] [tip] Добавил для MySQL 8.0 / Maria DB и Qt 6.2 [/tip]Важно: MysqlServer есть только под x64 архитектуру, поэтому Ваши проекты так же должны собираться компилятором под x64, поэтому не забудьте доставить MinGW x64 с помощью MaintenanceTool.exe из папки с Qt.
Так же при установке Qt нужно, что бы была отмечена установка исходников! Если устанавливали без Sources, то через MaintenanceTool.exe можете доставить.
Только обязательно той же версии!
0. Нужно скачать заголовочные файлы MySQL.
Страница загрузки: http://dev.mysql.com/downloads/mysql/
Для установки полной версии всего установщик назывался: «mysql-installer-community-8.0.25.0.msi«
Для установки только заголовочных и необходимым библиотек отметил следующее (в коннекторе заголовочных mysql.h нет):
ЛИБО качать готовый архив со всеми нужными файлами, называется «mysql-8.0.25-winx64.zip» после скачивания распаковываете куда-нить.
Дальше всё должно быть просто:
1. Открываем консольку (cmd) и не закрываем пока не закончим. Необходимо добавить в системную переменную Path пути к Qt (только замените на свои):
set PATH=C:\Qt\5.4\mingw491_32\bin;%PATH% (Там, где лежит qmake.exe)
set PATH=C:\Qt\Tools\mingw491_32\bin;%PATH% (там, где лежит mingw32-make.exe)
ВАЖНО!
Убедитесь, что в PATH у Вас нет никаких путей до других версий Qt и компиляторов, а то будет куча непонятных ошибок. Можно в консольке ввести echo %PATH% и посмотреть, что сейчас там.
Так же важно, что бы версия MinGW совпадала с той, что стоит в комплекте из параметров QtCreator:
И что бы именно этот комплект использовался при сборке Ваших приложений. Пути можно подсмотреть на вкладке «Профили Qt» и «Компиляторы»
Для Qt 5.x
cd C:\Qt\5.14\Src\qtbase\src\plugins\sqldrivers\mysql
qmake.exe -o MakeFile "INCLUDEPATH+=\"C:/Program Files/MySQL/MySQL Server 8.0/include\"" "LIBS+=\"C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib\"" "LIBS+=-L\"C:/Program Files/MySQL/MySQL Server 8.0/lib"" mysql.pro
mingw32-make -f MakeFile.release
[tip]Если будет ругаться «Cannot read qtsqldrivers-config.pri»,то в файле «qsqldriverbase.pri», который в диектории уровнем выше,
закомментируйте:
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)[/tip] [tip]Когда ругнётся на «Project ERROR: Library mysql is not defined»,
то в «mysql.pro» закомментируйте:
#QMAKE_USE += mysql
[/tip]
Только пути не забудьте на свои поменять.
И особое внимание к расстановке и направлению слэшей!
Для Qt 6.x
MySQL беру из скачанного архива.
ВАЖНО!
В PATH должен быть так же прописан путь до CMake.exe!
Его можно установить из Qt «MaintanceTool.exe«.
Если в PATH их будет несколько (если кто-либо ещё какие-либо пути в PATH вносил, где есть cmake.exe) может быть множество непонятных ошибок. Так же должен болтаться в PATH и сборщик Ninja.
Важно, что бы разрядность совпадала!
set PATH=E:/Qt/Tools/CMake_64/bin;%PATH%
set PATH=E:/Qt/Tools/Ninja;%PATH%
Ладно, собираем:
E:
cd E:\Qt\6.2.0\Src\qtbase\src\plugins\sqldrivers
mkdir build-sqldrivers
cd build-sqldrivers
set toolchain_path=E:/Qt/6.2.0/mingw81_64/lib/cmake/Qt6/qt.toolchain.cmake
cmake -G"Ninja" ../ -DMySQL_INCLUDE_DIR="D:/Projects/MysQL/include" -DMySQL_LIBRARY="D:/Projects/MySQL/lib/libmysql.lib" -DCMAKE_TOOLCHAIN_FILE="%toolchain_path%"
cmake --build .
Только пути не забудьте на свои заменить.
И особое внимание к расстановке и направлению слэшей!
Допустим, сборка успешно закончилась.
По идее в каталоге sqldrivers\plugins\sqldrivers должен появится файл:
qsqlmysql.dll
КЭП подсказывает, что это и есть то, что нужно (релизная версия).
Его нужно будет скопировать вручную в папку «Qt/5.14/mingw730_64/plugins/sqldrivers«
Если когда после запуска приложения в выхлопе будет:
warning unknown: QSqlDatabase: QMYSQL driver not loaded
warning unknown: QSqlDatabase: available drivers: QMYSQL
Надо бы скопировать libmySQL.dll, libssl-1_1-x64.dll и libcrypto-1_1-x64.dll (из папки C:/Program Files/MySQL/MySQL Server 8.0/lib или из папки с распакованным архивом из подпапок lib и bin) в папку C:/windows, либо таскать рядом с exe`шником будущей программы, либо добавить глобально путь в PATH, либо же их можно бросить туда же, куда и qsqlmysql.dll.
Если всё равно что-то не то, то качаете http://dependencywalker.com,
натравливаете его на dll файл или программу в целом и смотрите, какие зависимости ей нужны.
Официальное руководство по компиляции для Qt 6.x: https://doc.qt.io/qt-6/sql-driver.html
Должно быть всё ок.
Happy End.
22 комментария
Обновил пост, для Qt 5.3