Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QSqlDatabase: QMYSQL driver not loaded



  • Здравствуйте.
    Возникает ошибка

    QSqlDatabase: QMYSQL driver not loaded
    QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
    QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
    bd open error!
    Для продолжения нажмите любую клавишу . . .
    

    В интернете множество решений, но все они уже устарели, т.к. давно обновились версии ПО, пропали папки и программы на которые ссылаются инструкции. Прошу помощи в решении проблемы. Как собрать библиотеку?
    Windows 10 x64 + QT 5.11.1 x86 + mysql community 8.0.11.0 x64

    p.s.QT 5.11.1 на сайте доступна только x86,
    а для mysql только общий установщик на сайте x86 для 32 и 64 битных систем. ПО факту сервер лежит в папке Program Files, т.е. 64бит.

    Делаю по аналогии с инструкцией от сюда https://www.seppemagiels.com/blog/create-mysql-driver-qt5-windows
    Возникает эта ошибка. Помогите.

    Setting up environment for Qt usage...
    
    C:\Qt\Qt5.11.1\5.11.1\mingw53_32>set mysql = C:\PROGRA~1\MySQL\MYSQLS~1.0
    
    C:\Qt\Qt5.11.1\5.11.1\mingw53_32>cd C:\Qt\Qt5.11.1\5.11.1\Src\qtbase\src\plugins\sqldrivers\mysql
    
    C:\Qt\Qt5.11.1\5.11.1\Src\qtbase\src\plugins\sqldrivers\mysql>qmake "INCLUDEPATH+=%mysql%\\include" "LIBS+=%mysql%\\lib\\libmysql.lib" -o Makefile mysql.pro
    Info: creating stash file C:\Qt\Qt5.11.1\5.11.1\Src\qtbase\src\plugins\sqldrivers\.qmake.stash
    Cannot read C:/Qt/Qt5.11.1/5.11.1/Src/qtbase/src/plugins/sqldrivers/qtsqldrivers-config.pri: No such file or directory
    Project ERROR: Library 'mysql' is not defined.
    
    C:\Qt\Qt5.11.1\5.11.1\Src\qtbase\src\plugins\sqldrivers\mysql>
    

    Код:

    QT -= gui
    QT += sql
    
    CONFIG += c++11 console
    CONFIG -= app_bundle
    
    DEFINES += QT_DEPRECATED_WARNINGS
    
    SOURCES += \
            main.cpp
    
    
    win32:CONFIG(release, debug|release): LIBS += -L$$PWD/'../../../../Program Files/MySQL/MySQL Server 8.0/lib/' -llibmysql
    else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/'../../../../Program Files/MySQL/MySQL Server 8.0/lib/' -llibmysqld
    else:unix: LIBS += -L$$PWD/'../../../../Program Files/MySQL/MySQL Server 8.0/lib/' -llibmysql
    
    INCLUDEPATH += $$PWD/'../../../../Program Files/MySQL/MySQL Server 8.0/include'
    DEPENDPATH += $$PWD/'../../../../Program Files/MySQL/MySQL Server 8.0/include'
    
    win32:CONFIG(release, debug|release): LIBS += -L$$PWD/'../../../../Program Files/MySQL/MySQL Server 8.0/lib/' -lmysqlclient
    else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/'../../../../Program Files/MySQL/MySQL Server 8.0/lib/' -lmysqlclientd
    else:unix: LIBS += -L$$PWD/'../../../../Program Files/MySQL/MySQL Server 8.0/lib/' -lmysqlclient
    
    INCLUDEPATH += $$PWD/'../../../../Program Files/MySQL/MySQL Server 8.0/include'
    DEPENDPATH += $$PWD/'../../../../Program Files/MySQL/MySQL Server 8.0/include'
    
    #include <QCoreApplication>
    #include <iostream>
    #include <cstdlib> // для system
    #include <cstring>
    #include <QSqlDatabase>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
    
        QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "mydb");
           db.setHostName("localhost");
           db.setDatabaseName("pma");
           db.setUserName("root");
           db.setPassword("1234");
           bool ok = db.open();
           if (ok) cout << "bd open" << endl;
                else cout << "bd open error!" << endl;
        system("pause");
        return 0;
    
    
    }
    


  • Не хотите разметку в посте поправить, чтобы было понятнее где что?

    Делаю по аналогии с инструкцией от___сюда http://какойтолевыйисточ.ник

    Как насчёт официальной документации?



  • @veryqtperson к сожалению не нахожу кнопки, чтобы отредактировать тему. Первая тема на форуме. Прошу простить, не увидел сразу тега для кода. У меня отсутствует папка C:/MYSQL/MySQL Server <version>/lib/opt. В установщике также отсутствует
    "Libs & Include Files". Привёл скрины ниже. Подскажите пожалуйста как быть?

    How to Build the QMYSQL Plugin on Windows
    You need to get the MySQL installation files. Run SETUP.EXE and choose "Custom Install". Install the "Libs & Include Files" Module. Build the plugin as follows (here it is assumed that MySQL is installed in C:\MySQL):
    
    cd %QTDIR%\qtbase\src\plugins\sqldrivers
    qmake -- MYSQL_INCDIR=C:/MySQL/include "MYSQL_LIBDIR=C:/MYSQL/MySQL Server <version>/lib/opt"
    nmake sub-mysql
    If you are not using a Microsoft compiler, replace nmake with mingw32-make in the line above.
    

    1_1536575727648_13.PNG 0_1536575727648_12.PNG



  • к сожалению не нахожу кнопки, чтобы отредактировать тему. Первая тема на форуме.

    Ну тогда ладно :)

    У меня отсутствует папка C:/MYSQL/MySQL Server <version>/lib/opt. В установщике также отсутствует

    Вы не там смотрите, установщик MySQL изменился, и теперь эти компоненты должны быть в ветке Connector/C++. Так что официальная документация сплоховала, хе-хе.

    Я сейчас сам не могу проверить, к сожалению, потому что нету Windows машины под рукой. Если к концу недели не разберётесь, то я к тому времени как разу буду с Windows и смогу посмотреть в чём там дело.


Log in to reply