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

QSqlDatabase Driver not loaded



  • Hello, I have a problem while connecting to a database via QtSql. This is a fragment of my code:

    QCoreApplication a(argc, argv);
    QSqlDatabase db = QSqlDatabase::addDatabase("SQLFileDatabase");
    db.setHostName(host);
    db.setDatabaseName(nazwa);
    db.setUserName(login);
    db.setPassword(haslo);
    bool ok = db.open();
    

    This is the error I get: pastebin. I have tried moving .lib files and sqldrivers to the .exe directory but it does not help (as you can see in the log).
    I am using 32-bit QtCreator and Visual Studio 2017. Thanks for help.


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    Unless you wrote your own driver, SQLFileDatabase doesn't exist. It's QSQLITE if you are thinking about using a SQLite database.



  • I replaced SQLFileDatabase with QMYSQL and now I get this error:

    Cannot load library C:\Qt\5.11.1\msvc2017_64\plugins\sqldrivers\qsqlmysqld.dll: Unknown error 0x000000c1.
    QLibraryPrivate::loadPlugin failed on "C:/Qt/5.11.1/msvc2017_64/plugins/sqldrivers/qsqlmysqld.dll" : "Cannot load library C:\\Qt\\5.11.1\\msvc2017_64\\plugins\\sqldrivers\\qsqlmysqld.dll: Unknown error 0x000000c1."
    QSqlDatabase: QMYSQL driver not loaded
    QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
    

    It works only for QSQLITE.


  • Lifetime Qt Champion

    Did you install the needed dependencies ?

    If you set the QT_DEBUG_PLUGINS environment variable to 1 in the Run part of the Project panel, you will see why the plugin is not loaded.



  • This is the log with enabled variable: pastebin. The qsqlmysqld.dll file exists but it does not work (log from previous post). What are the dependencies?



  • Hi is there any difference if you put libmysqld.dll in the same directory as your .exe file?



  • I already have it in the same directory. However, I don't know it if works. It seems that it isn't detected by the program:

    QFactoryLoader::QFactoryLoader() looking at "C:/Qt/5.11.1/msvc2017_64/plugins/sqldrivers/libmysqld.dll"
    "Failed to extract plugin meta data from 'C:/Qt/5.11.1/msvc2017_64/plugins/sqldrivers/libmysqld.dll'"
             not a plugin
    

  • Lifetime Qt Champion

    As @hskoglund wrote: in the same folder as your application executable, not in the folder of the plugin.



  • It is in the .exe and also plugin folder. I deleted the one from plugin directory and now log looks like this: pastebin - the libmysqld.dll file is not even loaded. This is the plugin folder: imgur and the .exe directory: imgur



  • Hmm that error 0x000000c1 could mean your 64-bit MySql is not installed 100%.

    If you compile in Release mode instead of Debug, you get that same error 0x000000c1?

    Edit: also check that you indeed installed the 64-bit version of MySql and not the 32-bit version, easiest way to check:
    mysql.exe --V



  • I had 64-bit MySql Server and 32-bit C Connector so I replaced it with 64-bit C++ Conector. I have tried compiling in the Release mode with no success. Should I reinstall the Qt libraries?

    Cannot load library C:\Qt\5.11.1\msvc2017_64\plugins\sqldrivers\qsqlmysql.dll
    

    I think this may be the problem - file is in the directory but is not recognized by the program.



  • I think the qsqlmysql.dll file is ok, but since it's depending on libmysql.dll being present in the same directory as your Qt .exe file, if that libmysql.dll is 32-bit, then you could have an error anyway.



  • Can I download it (64 bit, Qt 5.11.1) without reinstalling the whole Qt?



  • I think you can do it by downloading the offline installer (never tried it) but easiest is most likely just to start MaintenanceTool.exe, remove the 5.11.1 MSVC2017 64-bit component and then selecting/installing it again.



  • I have reinstalled the Qt libraries and replaced all the files in the exe directory with the newer version, and it works now. This is what I have in the folder: exe file, libmysql.dll, Qt5Core.dll and Qt5Sql.dll (in release mode).

    Thank you for help!


Log in to reply