QSqlDatabase QMYSQL driver not loaded Windows 10 Qt5

При компиляции проекта в Windows 10 в Qt5, связанного с MySQL, появляется ошибка:

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7

QSqlDatabase QMYSQL driver not loadedДалее проверяем действительно ли отсутствует драйвер MySql.

В .pro файле прописываем

QT + = sql

и добавляем


#include <QSqlDatabase>
#include <QDebug>
qDebug()<< QSqlDatabase::drivers();

Получаем вывод:

(«QSQLITE», «QODBC», «QODBC3», «QPSQL», «QPSQL7»)

Драйвер MySql отсутствует.

В итоги, ошибка связана с тем, что отсутствует драйвер MYSQL и его необходимо скомпилировать самостоятельно из исходников mysql

C:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql

Если отсутствует папка Source, устанавливаем через MaintenanceTool.exe (C:\Qt\Qt5.12.12).

Устанавливаем пакет MYSQL — mysql-installer-community-8.0.32.0.msi и пакет MySQL Connector C 6.1

Устанавливаем в переменные среды Path

C:\Qt\Qt5.12.12\5.12.12\mingw73_64\bin, где лежит qmake.exe

C:\Qt\Qt5.12.12\Tools\mingw730_64\bin, где лежит mingw32-make.exe

C:\Program Files\MySQL\MySQL Connector C 6.1\lib

Состояние переменной среды можно посмотреть командой строке MinGW 7.3.0.64-bit

echo %PATH%

переменные среды Qt 5.12.12 MinGW 7.3.0 64-bit


1 способ

Добавим пути в программе Qt Creator к библиотеки MySQL

pro файл mysql

Нажимаем правой клавишей мыши по проекту и открывается меню и жмём Добавить библиотеку

Добавить библиотеку MySQL

Тип библиотеки — внешняя и Далее

Тип библиотеки

Снимаем галочки с Linux, Mac и жмём файл библиотеки и указываем путь C:\Program Files\MySQL\MySQL Server 8.0\lib к библиотеки libmysql.lib

Добавить библиотеку mysql Qt Creator

Выбор файла

пути к файлу библиотеки mysql Qt Creator

Жмем Далее и Завершить.

Файл .pro станет выглядеть так


TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#QMAKE_USE += mysql

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/'../../../../../../../../../Program Files/MySQL/MySQLServer/lib/' -llibmysql
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/'../../../../../../../../../Program Files/MySQL/MySQLServer/lib/' -llibmysqld

INCLUDEPATH += $$PWD/'../../../../../../../../../Program Files/MySQL/MySQLServer/include'
DEPENDPATH += $$PWD/'../../../../../../../../../Program Files/MySQL/MySQLServer/include'

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
#include(../qsqldriverbase.pri)

Если во время компиляции появится ошибки

Cannot read C:/Qt/Qt5.12.12/5.12.12/Src/qtbase/src/plugins/sqldrivers/qtsqldrivers-config.pri: No such file or directory

или

Project ERROR: Library ‘mysql’ is not defined.

нужно закомментировать строчки

#QMAKE_USE += mysql

#include(../qsqldriverbase.pri)

После компиляции в директории

C:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers

появятся файлы

libqsqlmysql.a, libqsqlmysqld.a, qsqlmysql.dll, qsqlmysqld.dll

sqldrivers

и копируем их в папку

C:\Qt\Qt5.12.12\5.12.12\mingw73_64\plugins\sqldrivers


2 способ

Устанавливаем MySQL Connector C 6.1 и желательно ставить не в папку Program Files, а в отдельную. Открываем исходник MySQL и в файле .pro в ручную прописываем пути к библиотеки MySQL.

 

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#QMAKE_USE += mysql

#LIBS += -LC:\Program Files\MySQL\MySQL Connector C 6.1\lib
#-lmysql


#win32:CONFIG(release, debug|release): LIBS += -L$$PWD/'../../../../../../../../../Program Files/MySQL/MySQL Connector C 6.1/lib/' -llibmysql
#else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/'../../../../../../../../../Program Files/MySQL/MySQL Connector C 6.1/lib/' -llibmysqld

#INCLUDEPATH += $$PWD/'../../../../../../../../../Program Files/MySQL/MySQL Connector C 6.1/include'
#DEPENDPATH += $$PWD/'../../../../../../../../../Program Files/MySQL/MySQL Connector C 6.1/include'


OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
#include(../qsqldriverbase.pri)

INCLUDEPATH += "C:\MySQLConnector6\include"

LIBS +="C:\MySQLConnector6\lib\libmysql.lib"

DESTDIR = ../mysql/lib/

компилируем и в папке

C:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers

появятся файлы

sqldrivers

и копируем их в директорию

C:\Qt\Qt5.12.12\5.12.12\mingw73_64\plugins\sqldrivers

И также файл libmysql.dll и libmysql.lib копируем из директории

C:\MySQLConnector6\lib

в директорию

C:\Qt\Qt5.12.12\5.12.12\mingw73_64\bin


3 способ

Устанавливаем MySQL Connector C 6.1  и запускаем командную строку в 

Переходим в папку

cd C:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql

и вводим

qmake — MYSQL_INCDIR=C:/MySQLConnector6/include/ MYSQL_LIBDIR=C:/MySQLConnector6/lib

mysql driver

mingw32-make.exe

и в директории

C:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers

получаем файлы

sqldrivers

524

3 комментария

Leave a Reply

Ваш адрес email не будет опубликован.