Как собрать драйвер MySQL для Qt под Win

Если при попытке использовать MySQL, ваше приложение выдает ошибку «mysql driver not loaded», то чаще всего это может быть по следующим причинам: вы забыли подключить SQL модуль в файле проекта, либо вы еще не настроили у себя поддержку этих драйверов. Так как изначально Qt идет без поддержки драйверов MySQL, то эти драйвера надо собирать самим. К счастью это не составит большого труда, расмотрим весь процесс по пунктам.

1. Скачиваем и устанавливаем Qt SDK. При установке обязательно выбираем пункт установить Qt Sources.

2. Скачиваем и устанавливаем MySQL. Все устанавливать не обязательно, но главное отметить к установке пункт «Client C API Library».

3. Далее: Меню «Пуск» -> «Все программы» -> «Qt SDK» -> «Desktop» -> «Qt 4.8.1 for Desktop (MingW)».

4. В открившейся консоли выполняем такие команды(предварительно отредактируйте пути на свой лад):

set mysql=C:\PROGRA~1\MySQL\MYSQLS~1.0\
cd C:\QtSDK\QtSources\4.8.1\src\plugins\sqldrivers\mysql\

qmake "INCLUDEPATH+=%mysql%\include" "LIBS+=%mysql%\lib\opt\libmysql.lib" -o Makefile mysql.pro
mingw32-make

qmake "INCLUDEPATH+=%mysql%\include" "LIBS+=%mysql%\lib\opt\libmysql.lib" -o Makefile mysql.pro "CONFIG+=release"
mingw32-make

Проверьте чтобы все команды выполнились без ошибок.
Внимание! Если у вас MySQL установлен в похожую папку на мою:

C:\Program Files\MySQL\MySQL Server 5.0\

то вам необходимо привести путь в такой вид:

C:\PROGRA~1\MySQL\MYSQLS~1.0\

Если испытываете затруднения с таким переводом, то путь можно посмотреть через Volkov Commander.

5. По итогам выполнения, вы найдете две новые директории: debag и release, созданные в текущей папке. В папке debag вы найдете файлы libqsqlmysqld4.a и qsqlmysqld4.dll, в то время как в папке release вы найдете libqsqlmysql4.a и qsqlmysql4.dll. Скопируйте эти файлы в папку:

C:\QtSDK\Desktop\Qt\4.8.1\mingw\plugins\sqldrivers\

6. Скопируйте libmysql.dll из папки MySQL в папку:

C:\WINDOWS\

7. Чтобы протестить, создайте новый проект с таким кодом:

#include <QApplication>
#include <QtSql>

int main(int argc, char *argv[])
{
  QCoreApplication a(argc, argv);
  qDebug() << QSqlDatabase::drivers();
  return a.exec();
}

Проверьте что в файле проекта(*.pro) добавлен SQL модуль:

QT += sql

Если все успешно, то в результате исполнения кода, в списке поддерживаемых драйверов:

("QSQLITE", "QMYSQL3", "QMYSQL", "QODBC3", "QODBC")

будет присутствовать QMYSQL.
Проверено на: MySQL Server 5.0, Qt 4.8.1, Windows XP.