В коробке 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 комментария

DonDimon1 8 апреля 2024 - 22:46

Спасибо за подробный гайд! Получилось собрать драйвер для обеих версий.
Была проблема для шестой версии на стадии сборки после команды cmake —build . сборка завершалась ошибкой на этапе [15/25]. Ошибка была в том, что путь к библиотекам MySQL содержал пробелы. Ссылка на решение: https://forum.qt.io/topic/110176/build-qmysql-driver-under-windows-10-a-sample-solution-for-qsqldatabase-qmysql-driver-not-loaded/24

Reply
Юлия 20 ноября 2021 - 1:15

БОЛЬШОЕ СПАСИБО!!!

Reply
Pavelk 24 мая 2021 - 21:53

Добавил про компиляций Qt6.2 и MySQL 8.0.25

Reply
Сергей 7 мая 2021 - 10:04

Огромное спасибо, бился два дня, только по этой инструкции получилось! Долго не собиралось потому что нужно после неправильной сборки через qmake удалить в папке «C:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql\» все MakeFile и в папках .moc, .obj, .pch очистить все release. Пути добавлял так:1 Мой компьютер –> свойства -> Дополнительные параметры системы -> Переменные среды -> Переменные среды пользователя -> Path

Reply
Pavelk 24 мая 2021 - 21:54

Пожалуйста =) Да, про очистку забыл добавить, спасибо!

Reply
Sergey 5 октября 2020 - 14:33

Спасибо тебе добрый человек. На qt 15.5.1 + mysql 8.0.21, все заработало +/- по инструкции.

Reply
Артём 17 августа 2020 - 16:42

Храни тебя Господь! И ещё миллион благодарностей!!!

Я уже 4й день мучаю гугл на тему состыковки MySQL и С++, кроме VisualStudio.

Твой метод реально заработал, спасибо тебе человек!

Reply
Виктор 16 октября 2019 - 12:22

1. «Так же при установке Qt нужно было отметить установку исходников!»
В инсталляторе Qt нет пункта никаких исходников (Sources). Там просто можно выбрать версию самого Qt и пункт «Developer and Design Tools», в котором находится куча версий MinGW, фрейморки, 3Д студия и openSSL. Все. Скачивал опенсорсный онлайн инсталлер.

2. «Открываем консольку»
Виндовую? cmd?

3. Пишу в нее следущее:
set PATH=C:\Qt\5.4\mingw491_32\bin;%PATH%
set PATH=C:\Qt\Tools\mingw491_32\bin;%PATH%

Не получается. Добавил ручками через свойства компьютера->доп.параметры системы… ну и так далее.

4. cd C:\Qt\5.4\Src\qtbase\src\plugins\sqldrivers\mysql
Самое интересное. Папки Src то нет. Эта та самая ресурсная папка, как я понял, которая должна появится при установки исходников (Sources). Которых нет.:(((

Ну дальше можно не идти, так как в этом-то и засада.

Буду признателен за помощь.

С уважением, Виктор.

Reply
Pavelk 16 октября 2019 - 13:04

Qt от версии к версии инсталлер меняют.
Сейчас скачал, на шаге выбора компонентов в раскрывающемся списке Qt 5.12.5 есть Sources.

Reply
Виктор 16 октября 2019 - 15:52

Действительно, при выборе компонентов в раскрывающемся списке Qt 5.12.5 есть Sources. Но у меня стоит 5.13.1, и в раскрывающемся списке ничего нет кроме минга.

От сюда вопрос: чем отличаются версии 5.12.5 от 5.13.1 и от 5.9.8?
Разница в весе заметна — 512мб(5.13.1) против 5.74Гб (5.9.8).

Подскажите Павел, если я установлю себе 5.12.5, что я должен выбрать? В раскрывающемся списке я должен выбрать две вещи: MinGW 7.3.0 64-bit и Source и все? Нужно ли что-то выбирать в пункте «Developer and Design Tools»? Я новичек, поэтому каких-то наворотов не требуется.) Все было хорошо в процессе обучения Qt, но в моем проекте потребовалась БД и тут начались проблемы.:(

Reply
Виктор 16 октября 2019 - 22:26

В общем скачал версию Qt 5.12.5 и закинул Source в 5.13.1. Установил QMysql Server. Но при попытке выполнить qmake.exe -o MakeFile «INCLUDEPATH+=\»C:/Program Files/MySQL/MySQL Server 5.6/ эту строку (у вас кстати там кавычки стоят не правильно) консоль дает ошибку (даже две): No such file or directory и Project ERROR: Library ‘mysql’ is not difined.

Reply
Pavelk 18 октября 2019 - 3:22

«От сюда вопрос: чем отличаются версии 5.12.5 от 5.13.1 и от 5.9.8?»
https://wiki.qt.io/New_Features_in_Qt_5.13
Исправляют баги, создают новые, добавляют фичи. Чего-то «вау» не обнаружил.

» что я должен выбрать? В раскрывающемся списке я должен выбрать две вещи: MinGW 7.3.0 64-bit и Source и все?
Лучше MinGW 32 битный который — проблем будет меньше для новичка ну и sources, всё остальное можете отключить, кроме QtCreator.

«эту строку (у вас кстати там кавычки стоят не правильно) консоль дает ошибку (даже две): No such file or directory и Project ERROR: Library ‘mysql’ is not difined.»
Поправил форматирование (пост 7 лет назад писал, старое форматирование перестало адекватно работать).
Скопируйте весь текст, возможно Вы не полностью скопировали.

Pavelk 18 октября 2019 - 4:33

Виктор 20 октября 2019 - 12:25

Хммм.

После выполнения команды qmake.exe -o MakeFile «INCLUDEPATH+=\»C:/Program Files/MySQL/MySQL Server 5.7/include\»» «LIBS+=\»C:/Program Files/MySQL/MySQL Server 5.7/lib/libmysql.lib\»» «LIBS+=-L\»C:/Program Files/MySQL/MySQL Server 5.7/lib/\»» mysql.pro

командная строка пишет

Cannot read C:/Qt/5.13.1/Src/qtbase/src/plugins/sqldrivers/qtsqldrivers-config.pri: No such file or directory
Project ERROR: Library ‘mysql’ is not defined.

Виктор 20 октября 2019 - 14:26

Спасибо за ответ.

После ввода этой строки qmake.exe -o MakeFile «INCLUDEPATH+=\»C:/Program Files/MySQL/MySQL Server 5.7/include\»» «LIBS+=\»C:/Program Files/MySQL/MySQL Server 5.7/lib/libmysql.lib\»» «LIBS+=-L\»C:/Program Files/MySQL/MySQL Server 5.7/lib/\»» mysql.pro

ошибка Cannot read C:/Qt/5.13.1/Src/qtbase/src/plugins/sqldrivers/qtsqldrivers-config.pri: No such file or directory
Project ERROR: Library ‘mysql’ is not defined.

В чем может быть дело? Скопировал все правильно. Сто раз проверил.

Виктор 20 октября 2019 - 14:26

Спасибо за ответ.

После ввода этой строки qmake.exe -o MakeFile «INCLUDEPATH+=\»C:/Program Files/MySQL/MySQL Server 5.7/include\»» «LIBS+=\»C:/Program Files/MySQL/MySQL Server 5.7/lib/libmysql.lib\»» «LIBS+=-L\»C:/Program Files/MySQL/MySQL Server 5.7/lib/\»» mysql.pro

ошибка Cannot read C:/Qt/5.13.1/Src/qtbase/src/plugins/sqldrivers/qtsqldrivers-config.pri: No such file or directory
Project ERROR: Library ‘mysql’ is not defined.

В чем может быть дело? Скопировал все правильно. Сто раз проверил.

Pavelk 3 ноября 2019 - 1:41

Извините, долго не отвечал. Всё ещё не получается?

Сергей 20 августа 2020 - 14:05

Здравствуйте!
При подключении к локальной базе (127.0.0.1) проблем не возникло. При попытке подключиться к базе на сервере выдает ошибку:
QSqlError(«2026», «QMYSQL: Unable to connect», «SSL connection error: unknown error number»)
Помогите пожалуйста..

Reply
Николай 19 февраля 2017 - 9:43

Спасибо большое за статью! По делу, ясно, без излишеств!!

Reply
Pavelk 20 января 2015 - 18:36

Обновил пост, для Qt 5.3

Reply
Олег 4 февраля 2013 - 10:17

Что значит «на 64 битной винде   установить в свойствах проекта  mingw 32 битный » и как это сделать?

Reply
Pavelk 8 февраля 2013 - 5:48

В QTCreatore слева в панельке есть «гаечный ключ» в этих настройках имеется ввиду.

Reply

Leave a Comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

You may also like