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

Qt MySQL Driver Mingw32-make not working



  • @jsulm so I should re-install the entire mysql workbench and server?


  • Qt Champions 2019

    @hobbyProgrammer Workbench I think (I think this one contains the client libs)



  • @jsulm
    I already noticed that it went wrong with the spaces, but I was hoping that there was a simple solution for this instead of reinstalling the entire mysql workbench/server.

    But I'll give it a try as I am desperate to get this connection working


  • Qt Champions 2019

    @hobbyProgrammer said in Qt MySQL Driver Mingw32-make not working:

    reinstalling the entire mysql workbench/server.

    why? Moving the two needed directories to somewhere else should be enough.



  • @Christian-Ehrlicher I can just make a new folder without spaces and move all the files to there?



  • @Christian-Ehrlicher @Christian-Ehrlicher I moved it and used this command (from this tutorial:

    cd C:\Qt\5.12.5\Src\qtbase\src\plugins\sqldrivers
    qmake -- MYSQL_INCDIR=C:\MySQL\include "MYSQL_LIBDIR=C:\MySQL\lib"
    mingw32-make 
    

    but still get the same errors..


  • Qt Champions 2019

    @hobbyProgrammer Do a clean rebuild



  • @jsulm still results in getting the same error. I should rebuild sqldrivers.pro right?


  • Qt Champions 2019

    @hobbyProgrammer said in Qt MySQL Driver Mingw32-make not working:

    cd C:\Qt\5.12.5\Src\qtbase\src\plugins\sqldrivers

    You're doing in source build which is bad.
    Make sure there are no build artefacts.



  • @jsulm why is that bad? I'm quite new and just following the instructions from the docs, so I'd like to learn how to do things properly :')


  • Qt Champions 2019

    @hobbyProgrammer said in Qt MySQL Driver Mingw32-make not working:

    why is that bad?

    Because you're polluting source tree with build artefacts. If you then want to do a clean rebuild you need to delete all build artefacts and there can be many of them all over the place. Out of source builds are way easier:

    1. Create a build directory
    2. Go to that directory
    3. qmake
    4. make
    5. make install

    For a clean rebuild delete everything inside build directory (or delete it and create again) and repeat steps 2..5.

    By the way: QtCreator does out of source builds by default, so your source tree is clean and it's easier to use version control systems like Git :-)



  • @jsulm Thank you for your answer. I'm gonna retry to make the driver with this information in mind.



  • I still did not get it to work.

    What I did:

    1. Moved all the content from MySQL server directory (contained a lot of spaced) to C:/MySQL.
    2. Used these commands:
    cd C:\Qt\5.12.5\Src\qtbase\src\plugins\sqldrivers
    qmake -- MYSQL_INCDIR=:C\MySQL\include "MYSQL_LIBDIR=C:\MySQL\lib"
    mingw32-make 
    

    yet it still doesn't work. Is there anyone who knows why and can help me? I really want to connect to my MySQL database..


  • Qt Champions 2019

    @hobbyProgrammer said in Qt MySQL Driver Mingw32-make not working:

    MYSQL_INCDIR=:C\MySQL\include

    typo?

    What was the output of the qmake command?


  • Lifetime Qt Champion

    You have the : before the C. Is this just a typo here ?



  • @Christian-Ehrlicher @SGaist
    yes that was a typo, but the output stays the same: "Project ERROR: Could not find feature sql-mysql."


  • Qt Champions 2019

    That's not the complete output. Please remove all intermediate files create by qmake (run first 'make distclean', then also remove qmake.cache) and rerun qmake again with the correct mysql parameters. Then show us the output.



  • @Christian-Ehrlicher right now this is my output:

    C:\Qt\5.12.5\Src\qtbase\src\plugins\sqldrivers>qmake -- MYSQL_INCDIR=C:\MySQL\include "MYSQL_LIBDIR=C:\MySQL\lib"

    Running configuration tests...
    Done running configuration tests.

    Configure summary:

    Qt Sql Drivers:
    DB2 (IBM) .............................. no
    InterBase .............................. no
    MySql .................................. no
    OCI (Oracle) ........................... no
    ODBC ................................... yes
    PostgreSQL ............................. no
    SQLite2 ................................ no
    SQLite ................................. yes
    Using system provided SQLite ......... no
    TDS (Sybase) ........................... no

    Qt is now configured for building. Just run 'mingw32-make'.
    Once everything is built, you must run 'mingw32-make install'.
    Qt will be installed into 'C:\Qt\5.12.5\mingw73_32'.

    Prior to reconfiguration, make sure you remove any leftovers from
    the previous build.

    Then I ran mingw32-make:

    C:\Qt\5.12.5\Src\qtbase\src\plugins\sqldrivers>mingw32-make
    cd odbc\ && ( if not exist Makefile C:\Qt\5.12.5\mingw73_32\bin\qmake.exe -o Makefile C:\Qt\5.12.5\Src\qtbase\src\plugins\sqldrivers\odbc\odbc.pro ) && mingw32-make -f Makefile
    mingw32-make[1]: Entering directory 'C:/Qt/5.12.5/Src/qtbase/src/plugins/sqldrivers/odbc'
    mingw32-make -f Makefile.Release all
    mingw32-make[2]: Entering directory 'C:/Qt/5.12.5/Src/qtbase/src/plugins/sqldrivers/odbc'
    mingw32-make[2]: Nothing to be done for 'all'.
    mingw32-make[2]: Leaving directory 'C:/Qt/5.12.5/Src/qtbase/src/plugins/sqldrivers/odbc'
    mingw32-make -f Makefile.Debug all
    mingw32-make[2]: Entering directory 'C:/Qt/5.12.5/Src/qtbase/src/plugins/sqldrivers/odbc'
    mingw32-make[2]: Nothing to be done for 'all'.
    mingw32-make[2]: Leaving directory 'C:/Qt/5.12.5/Src/qtbase/src/plugins/sqldrivers/odbc'
    mingw32-make[1]: Leaving directory 'C:/Qt/5.12.5/Src/qtbase/src/plugins/sqldrivers/odbc'
    cd sqlite\ && ( if not exist Makefile C:\Qt\5.12.5\mingw73_32\bin\qmake.exe -o Makefile C:\Qt\5.12.5\Src\qtbase\src\plugins\sqldrivers\sqlite\sqlite.pro ) && mingw32-make -f Makefile
    mingw32-make[1]: Entering directory 'C:/Qt/5.12.5/Src/qtbase/src/plugins/sqldrivers/sqlite'
    mingw32-make -f Makefile.Release all
    mingw32-make[2]: Entering directory 'C:/Qt/5.12.5/Src/qtbase/src/plugins/sqldrivers/sqlite'
    mingw32-make[2]: Nothing to be done for 'all'.
    mingw32-make[2]: Leaving directory 'C:/Qt/5.12.5/Src/qtbase/src/plugins/sqldrivers/sqlite'
    mingw32-make -f Makefile.Debug all
    mingw32-make[2]: Entering directory 'C:/Qt/5.12.5/Src/qtbase/src/plugins/sqldrivers/sqlite'
    mingw32-make[2]: Nothing to be done for 'all'.
    mingw32-make[2]: Leaving directory 'C:/Qt/5.12.5/Src/qtbase/src/plugins/sqldrivers/sqlite'
    mingw32-make[1]: Leaving directory 'C:/Qt/5.12.5/Src/qtbase/src/plugins/sqldrivers/sqlite'


  • Qt Champions 2019

    @hobbyProgrammer said in Qt MySQL Driver Mingw32-make not working:

    MySql .................................. no

    So why do you even try to call mingw32-make when the configure step says it could not find the mysql stuff?
    There is a config.log (iirc) where you can take a look into why the mysql plugins are not found.

    MYSQL_INCDIR=C:\MySQL\include "MYSQL_LIBDIR=C:\MySQL\lib"

    Why one with " and one without? It's not needed ...



  • @Christian-Ehrlicher It seems like it cannot find the libraries in the global paths.

    Command line: "MYSQL_INCDIR=C:\MySQL\include" "MYSQL_LIBDIR=C:\MySQL\lib"
    Global lib dirs: [C:\openssl\lib C:\Utils\my_sql\mysql-5.6.11-win32\lib C:\Utils\postgresql\pgsql\lib] ["C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\ATLMFC\lib\x86" "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\lib\x86" "C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x86" "C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\ucrt\x86" "C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x86"]
    Global inc dirs: [C:\openssl\include C:\Utils\my_sql\mysql-5.6.11-win32\include C:\Utils\postgresql\pgsql\include] ["C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\ATLMFC\include" "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\include" "C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt" "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared" "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um" "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt" "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt"]
    ...........
    ...........
    Trying source 5 (type inline) of library mysql ...
    None of [liblibmysql.dll.a liblibmysql.a libmysql.dll.a libmysql.a libmysql.lib] found in ["C:\Program Files (x86)\MySQL\MySQL Connector C++ 8.0\lib"] and global paths.
    => source produced no result.


  • Qt Champions 2019

    @hobbyProgrammer said in Qt MySQL Driver Mingw32-make not working:

    Trying source 5 (type inline) of library mysql ...

    There are 4 other tries finding mysql before, please show the output



  • @Christian-Ehrlicher

    this is the entire mysql section I believe:

    Command line: "MYSQL_INCDIR=C:\MySQL\include" "MYSQL_LIBDIR=C:\MySQL\lib"
    Global lib dirs: [C:\openssl\lib C:\Utils\my_sql\mysql-5.6.11-win32\lib C:\Utils\postgresql\pgsql\lib] ["C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\ATLMFC\lib\x86" "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\lib\x86" "C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x86" "C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\ucrt\x86" "C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x86"]
    Global inc dirs: [C:\openssl\include C:\Utils\my_sql\mysql-5.6.11-win32\include C:\Utils\postgresql\pgsql\include] ["C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\ATLMFC\include" "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\include" "C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt" "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared" "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um" "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt" "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt"]
    loaded result for library config.sqldrivers.libraries.db2
    Trying source 0 (type inline) of library db2 ...
    None of [libdb2cli.dll.a libdb2cli.a db2cli.dll.a db2cli.a db2cli.lib] found in [] and global paths.
    => source produced no result.
    Trying source 1 (type inline) of library db2 ...
    => source failed condition '!config.win32'.
    test config.sqldrivers.libraries.db2 FAILED
    loaded result for library config.sqldrivers.libraries.ibase
    Trying source 0 (type inline) of library ibase ...
    None of [libgds32_ms.dll.a libgds32_ms.a gds32_ms.dll.a gds32_ms.a gds32_ms.lib] found in [] and global paths.
    => source produced no result.
    Trying source 1 (type inline) of library ibase ...
    => source failed condition '!config.win32'.
    test config.sqldrivers.libraries.ibase FAILED
    loaded result for library config.sqldrivers.libraries.mysql
    Trying source 0 (type mysqlConfig) of library mysql ...
    mysql_config not found.
    => source produced no result.
    Trying source 1 (type mysqlConfig) of library mysql ...
    mysql_config not found.
    => source produced no result.
    Trying source 2 (type mysqlConfig) of library mysql ...
    mysql_config not found.
    => source produced no result.
    Trying source 3 (type mysqlConfig) of library mysql ...
    mysql_config not found.
    => source produced no result.
    Trying source 4 (type inline) of library mysql ...
    => source failed condition '!config.win32'.
    Trying source 5 (type inline) of library mysql ...
    None of [liblibmysql.dll.a liblibmysql.a libmysql.dll.a libmysql.a libmysql.lib] found in ["C:\Program Files (x86)\MySQL\MySQL Connector C++ 8.0\lib"] and global paths.
    => source produced no result.


  • Qt Champions 2019

    @hobbyProgrammer said in Qt MySQL Driver Mingw32-make not working:

    liblibmysql.dll.a liblibmysql.a libmysql.dll.a libmysql.a libmysql.lib]

    So is one of these libraries available in C:\Program Files (x86)\MySQL\MySQL Connector C++ 8.0\lib ? I would guess no. It's in C:\Program Files\MySQL\MySQL Server 8.0\lib or C:\Program Files (x86)\MySQL\MySQL Server 8.0\lib depending on what you've installed.



  • @Christian-Ehrlicher yes i know that these libraries are inside the MySQL Server 8.0 folder, but I don't know why it's not searching there. I used these commands: C:\Qt\5.12.5\Src\qtbase\src\plugins\sqldrivers>qmake -- MYSQL_INCDIR=C:\Program Files\MySQL\MySQL Server 8.0\include "MYSQL_LIBDIR=C:\Program Files\MySQL\MySQL Server 8.0\lib"

    I also moved the folder MySQL Server 8.0 to C:/MySQL, so I can access to a library without any spaces.


  • Qt Champions 2019

    @hobbyProgrammer said in Qt MySQL Driver Mingw32-make not working:

    C:\Program Files\MySQL\MySQL Server 8.0\include

    put this in "" as it contains spaces



  • @jsulm yes I already tried that, but it failed to work



  • @jsulm just to be sure, it is just this command right?

    qmake -- "MYSQL_INCDIR=C:\Program Files\MySQL\MySQL Server 8.0\include" "MYSQL_LIBDIR=C:\Program Files\MySQL\MySQL Server 8.0\lib"

    not that I should add sqldrivers.pro behind it?

    qmake -- "MYSQL_INCDIR=C:\Program Files\MySQL\MySQL Server 8.0\include" "MYSQL_LIBDIR=C:\Program Files\MySQL\MySQL Server 8.0\lib" sqldrivers.pro


  • Qt Champions 2019

    @hobbyProgrammer said in Qt MySQL Driver Mingw32-make not working:

    not that I should add sqldrivers.pro behind it?

    Depends in which directory you are. If you're in the directory where sqldrivers.pro is then no need to mention it. It looks like you're not doing out of source build which you should do. Also, are you sure qmake you're calling is the correct one (because you do not specify complete path)?


  • Qt Champions 2017

    I had the same problem the other day. qmake refused to find the mysql libs for whatever reason.
    So here's what I did:

    1. cd into C:/Qt/5.12.5/Src/qtbase
    2. $> configure.exe -prefix C:\Qt\5.12.5\mingw73_32 -release -platform win32-g++ -sql-mysql MYSQL_INCDIR="C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include" MYSQL_LIBDIR="C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\lib"
      Adjust the prefix and mysql paths as needed.
    3. If configure complains about QMAKESPEC and other variables - unset them; i.e. $> set QMAKESPEC=
    4. Rerun configure and make sure in the summary the mysql is detected
    5. Do a partial build of Qt: $> mingw32-make module-qtbase
    6. Go to C:/Qt/5.12.5/Src/qtbase/src/plugins/sqldrivers and install the plugins in the prefix location:
      mingw32-make install

    Good luck.

    PS. That's for a release build, for the debug version you need to set the appropriate flag to configure to build both.



  • @kshegunov I can't seem to find configure.exe, should it be .exe or can it also be a different type of file?


  • Qt Champions 2017

    @hobbyProgrammer said in Qt MySQL Driver Mingw32-make not working:

    I can't seem to find configure.exe, should it be .exe or can it also be a different type of file?

    It's an exe. It's in your Qt source folder.



  • @kshegunov
    I see 3 configure files:
    config.txt
    configure (which is labelled as 'file')
    configure.bat
    configure.json



  • @kshegunov I tried with the .bat file, which seems to work properly, but I get this:

    ERROR: Feature 'sql-mysql' was enabled, but the pre-condition 'libs.mysql' failed.

    Which doesn't seem ideal.
    Also when I checked it with a sql project I still got:
    QSqlDatabase: QMYSQL driver not loaded
    QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7


  • Qt Champions 2017

    @hobbyProgrammer said in Qt MySQL Driver Mingw32-make not working:

    ERROR: Feature 'sql-mysql' was enabled, but the pre-condition 'libs.mysql' failed.

    Then either you haven't provided the correct paths to the mysql headers and libraries or they're incompatible for some reason (e.g. they're 32bits while your compiler is 64bits or vice versa).



  • @kshegunov alright, I managed to get it right on my PC, but I'd also like to have it on my laptop. The reimp worked and the MySQL folder\lib now contains libmysql.def and libmysql.a, however whenever I run configure.exe it doesn't work.

    configure.exe -debug-and-release -platform win32-g++ -qt-sql-mysql -l mysql -I C:\MySQL\include -L C:\MySQL\lib
    

    gives me this:

    Bootstrapping qmake ...
    mingw32-make: Nothing to be done for 'first'.
    ERROR: Invalid value given for boolean command line option 'sql-mysql'.
    
    ERROR: Unknown command line option '-l'.
    

  • Lifetime Qt Champion

    Hi,

    As the error text suggests, remove that -l option. The configure script doesn't support it. It only wants the include and library paths.



  • @SGaist alright that solves the last error, but I still have this one:

    ERROR: Invalid value given for boolean command line option 'sql-mysql'.
    

  • Qt Champions 2019

    @hobbyProgrammer Can you show your current configure call?



  • @jsulm

    i tried:

    configure.exe -debug-and-release -platform win32-g++ -qt-sql-mysql -I C:\MySQL\include -L C:\MySQL\lib

    which gave me this error:

    ERROR: Invalid value given for boolean command line option 'sql-mysql'.
    

    configure.exe -debug-and-release -platform win32-g++ -sql-mysql -I C:\MySQL\include -L C:\MySQL\lib

    which gave me this error:

    ERROR: Feature 'sql-mysql' was enabled, but the pre-condition 'libs.mysql' failed.
    

  • Qt Champions 2019

    @hobbyProgrammer It should be -sql-mysql
    Check the configure log to see what exactly is missing.


Log in to reply