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

Problem with MySQL driver on mac



  • Hi,
    I am working on MySQL database on mac, run program generates the following error.

    QSqlDatabase: QMYSQL driver not loaded
    QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7

    I have MySQL installed on my computer (macOS high Sierra) that has the following driver libmysqlclient.20.dylib. The MySQL path is the following:

    /usr/local/mysql-8.0.15-macos10.14-x86_64/lib

    I have executed the following code:

    cd /Users/eduardo/Qt/5.11.1/clang_64/plugins/sqldrivers
    otool -L libqsqlmysql.dylib

    out:
    libqsqlmysql.dylib (compatibility version 0.0.0, current version 0.0.0)
    @rpath/QtSql.framework/Versions/5/QtSql (compatibility version 5.11.0, current version 5.11.1)
    @rpath/QtCore.framework/Versions/5/QtCore (compatibility version 5.11.0, current version 5.11.1)
    /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
    /usr/local/mysql/lib/libmysqlclient.20.dylib (compatibility version 20.0.0, current version 20.0.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 307.5.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.50.2)

    Does anyone know how I can connect to my database?
    I have researched in the net and I have found that it is used, install_name_tool –change ,although I am not sure what it is for. I have tried this but obviously something is wrong.
    install_name_tool – change /usr/local/mysql/lib/libmysqlclient.20.dylib /usr/local/mysql-8.0.15-macos10.14-x86_64/lib/libmysqlclient.21.dylib /Users/eduardo/Qt/5.11.1/clang_64/plugins/sqldrivers/libqsqlmysql.dylib

    Thanks for help.

    0_1550367032393_mysql.png
    0_1550367047371_path2.png



  • @Albert-Huert said in Problem with MySQL drive on mac:

    QSqlDatabase: QMYSQL driver not loaded

    does your .pro file specify the library and the path to it correctly?


  • Lifetime Qt Champion

    Hi,

    Start your application with the QT_DEBUG_PLUGINS environment variable set to 1. It will show you more information about what is happening with the MySQL plugin.



  • @SGaist said in Problem with MySQL drive on mac:

    Start your application with the QT_DEBUG_PLUGINS

    Hi,
    how I start application with the QT_DEBUG_PLUGINS?
    thanks for your answer


  • Qt Champions 2019

    @Albert-Huert If you're using QtCreator go to the Run settings of your projects and add it in "Run Environment".



  • @jsulm thank you very much for your help!!



  • @SGaist Hi,
    I get this output,

    Got keys from plugin meta data ("QPSQL7", "QPSQL")
    QFactoryLoader::QFactoryLoader() checking directory path "/Users/eduardo/Desktop/build-prueba-Desktop_Qt_5_11_1_clang_64bit-Debug/prueba.app/Contents/MacOS/sqldrivers" ...
    Cannot load library /Users/eduardo/Qt/5.11.1/clang_64/plugins/sqldrivers/libqsqlmysql.dylib: (dlopen(/Users/eduardo/Qt/5.11.1/clang_64/plugins/sqldrivers/libqsqlmysql.dylib, 133): Library not loaded: /usr/local/mysql/lib/libmysqlclient.20.dylib
    Referenced from: /Users/eduardo/Qt/5.11.1/clang_64/plugins/sqldrivers/libqsqlmysql.dylib
    Reason: image not found)
    QLibraryPrivate::loadPlugin failed on "/Users/eduardo/Qt/5.11.1/clang_64/plugins/sqldrivers/libqsqlmysql.dylib" : "Cannot load library /Users/eduardo/Qt/5.11.1/clang_64/plugins/sqldrivers/libqsqlmysql.dylib: (dlopen(/Users/eduardo/Qt/5.11.1/clang_64/plugins/sqldrivers/libqsqlmysql.dylib, 133): Library not loaded: /usr/local/mysql/lib/libmysqlclient.20.dylib\n Referenced from: /Users/eduardo/Qt/5.11.1/clang_64/plugins/sqldrivers/libqsqlmysql.dylib\n Reason: image not found)"
    QSqlDatabase: QMYSQL driver not loaded
    QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7

    I have seen that it is recommended to add DYLD_LIBRARY_PATH, but it appears as variable in "run environment".

    0_1550527959570_Run environment.png


  • Lifetime Qt Champion

    @Albert-Huert said in Problem with MySQL driver on mac:

    I have seen that it is recommended to add DYLD_LIBRARY_PATH, but it appears as variable in "run environment".

    That's correct.

    Append :/usr/local/mysql/lib/ to it. The semicolon is the separation between paths just as in the PATH environment variable.



  • @SGaist Solved with the instruction you gave me.
    Thank you



  • @kenchan Thank you very much for the help.


  • Lifetime Qt Champion

    Great !

    Since you have it working now, please mark the thread as solved using the "Topic Tools" button so that other forum users may know a solution has been found :)


Log in to reply