Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Installation and Deployment
  4. Mysql not defined when compiling mysql driver
Forum Updated to NodeBB v4.3 + New Features

Mysql not defined when compiling mysql driver

Scheduled Pinned Locked Moved Solved Installation and Deployment
39 Posts 3 Posters 5.3k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • K kshegunov
    20 Apr 2020, 00:24

    @Thombou said in Mysql not defined when compiling mysql driver:

    If I have those files, does it mean that I have successfully installed the plugin?

    No, the plugin files go where the other binaries are in <QTDIR>/plugins/sqldrivers where <QTDIR> is the directory where Qt is installed. After that libmysql.dll must be loadable (which usually means it's going to end up in the %%PATH%%.

    Run your application with QT_DEBUG_PLUGINS=1 for additional diagnostics on the loading. If it finds the plugin dll but can't load it, it usually means it can't load the mysql client library.

    T Offline
    T Offline
    Thombou
    wrote on 20 Apr 2020, 07:30 last edited by Thombou
    #15

    @kshegunov Thanks for your help.
    Let's start from the beginning. I tried to open the mysql plugin project with mysql.pro. In the pro file, I added the path to the inblude and lib folder of my installation of mysql (as recommended by MEMekaniske, I put it under C:/mysql). Then I run the project and this is where I found the dll in the directory C:\Qt\5.14.2\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers.
    Then I copied them in the directory C:\Qt\5.14.2\msvc2017_64\plugins\sqldrivers.

    After that, I did the qmake command which gave me the output I showed previously, then nmake and nmake install.

    Then, I copied in the directory where I have my exe file the lib libmysql.dll. In the .pro file of my project, I only added QT += sql, and in my source file `#include <QtSql>.

    When I add QT_DEBUG_PLUGIN=1, I don't have more information in my output window...

    1 Reply Last reply
    0
    • T Offline
      T Offline
      Thombou
      wrote on 20 Apr 2020, 07:52 last edited by
      #16

      I realized that I have an issue. In the command line MSVC 20017, in the path, there is no directory pointing to nmake.exe. It wirked before before in my path I had added the path to the other compiler I have on my computer (MinGw) and it was very likely using that one. So I suppose I need to add the path to the nmake directory. However I have 4 directories where I see nmake. I suppose I shoud use the one in C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\Hostx64\x64 ? I also have a folder Hostx86 and a x86 subfolder. I am quite lost in what i am doing...

      1 Reply Last reply
      0
      • M Offline
        M Offline
        MEMekaniske
        wrote on 20 Apr 2020, 08:05 last edited by
        #17

        Are you using visual studio for qt programming or qt creator?

        When installing the different qt build platforms, mingw, msvc etc, you also get a command prompt installed with the variables already set for that environment, so if you search start menu for Qt 5.14.2 (MSVC 2017 64-bit) and launch it as administrator that should be the one you work in when building the source version 5.14.2, for a build you are doing with project configuration for MSVC 2017 64-bit and then nmake etc should be working in the correct environment, no matter what paths are set in windows.

        1 Reply Last reply
        1
        • T Offline
          T Offline
          Thombou
          wrote on 20 Apr 2020, 08:24 last edited by Thombou
          #18

          Ok, I understand that.

          I am using QtCreator and I have 2 kits. One for MSVC installed with the visual studio build tools 2019 and the other for mingw.

          I already use the dedicated command line for MSVC However, in this command line, I have no nmake
          e76a68c5-7291-40f2-a492-308eaecfd316-image.png. Therefore I have run vcvarsall.bat x64.

          This is the output of my config.log

          Command line: "MYSQL_INCDIR=C:/mysql/include/" "MYSQL_LIBDIR=C:/mysql/lib/"
          Global lib dirs: [C:\\openssl\\lib C:\\Utils\\my_sql\\mysql-5.7.25-winx64\\lib C:\\Utils\\postgresql\\pgsql\\lib] []
          Global inc dirs: [C:\\openssl\\include C:\\Utils\\my_sql\\mysql-5.7.25-winx64\\include C:\\Utils\\postgresql\\pgsql\\include] []
          looking for library db2
          Trying source 0 (type inline) of library db2 ...
          sqlcli.h not found in [] and global paths.
          sqlcli1.h not 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
          looking for library ibase
          Trying source 0 (type inline) of library ibase ...
          ibase.h not 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
          looking for library 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 ...
          + cd /d C:\Qt\5.14.2\Src\qtbase\src\plugins\sqldrivers\config.tests\mysql && C:\Qt\5.14.2\msvc2017_64\bin\qmake.exe "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared warn_off console single_arch" "QMAKE_LIBDIR += C:\\openssl\\lib C:\\Utils\\my_sql\\mysql-5.7.25-winx64\\lib C:\\Utils\\postgresql\\pgsql\\lib" "INCLUDEPATH += C:\\openssl\\include C:\\Utils\\my_sql\\mysql-5.7.25-winx64\\include C:\\Utils\\postgresql\\pgsql\\include" "QMAKE_USE += mysql" "QMAKE_LIBS_MYSQL = -LC:/mysql/lib/ -llibmysql" "QMAKE_INCDIR_MYSQL = C:/mysql/include/" C:/Qt/5.14.2/Src/qtbase/src/plugins/sqldrivers/config.tests/mysql
          > Project ERROR: msvc-version.conf loaded but QMAKE_MSC_VER isn't set
           => source failed verification.
          Trying source 6 (type inline) of library mysql ...
            => source failed condition '!config.win32'.
          test config.sqldrivers.libraries.mysql FAILED
          looking for library oci
          Trying source 0 (type inline) of library oci ...
          oci.h not found in [] and global paths.
            => source produced no result.
          Trying source 1 (type inline) of library oci ...
            => source failed condition '!config.win32'.
          test config.sqldrivers.libraries.oci FAILED
          looking for library odbc
          Trying source 0 (type inline) of library odbc ...
          sql.h not found in [] and global paths.
          sqlext.h not found in [] and global paths.
            => source produced no result.
          Trying source 1 (type inline) of library odbc ...
            => source failed condition 'config.darwin'.
          Trying source 2 (type inline) of library odbc ...
            => source failed condition '!config.win32 && !config.darwin'.
          test config.sqldrivers.libraries.odbc FAILED
          looking for library psql
          Trying source 0 (type pkgConfig) of library psql ...
          pkg-config use disabled globally.
            => source produced no result.
          Trying source 1 (type psqlConfig) of library psql ...
          pg_config not found.
            => source produced no result.
          Trying source 2 (type psqlEnv) of library psql ...
          libpq-fe.h not found in [] and global paths.
            => source produced no result.
          Trying source 3 (type psqlEnv) of library psql ...
            => source failed condition '!config.win32'.
          test config.sqldrivers.libraries.psql FAILED
          looking for library sqlite2
          Trying source 0 (type inline) of library sqlite2 ...
          sqlite.h not found in [] and global paths.
            => source produced no result.
          test config.sqldrivers.libraries.sqlite2 FAILED
          looking for library tds
          Trying source 0 (type sybaseEnv) of library tds ...
          + cd /d C:\Qt\5.14.2\Src\qtbase\src\plugins\sqldrivers\config.tests\tds && C:\Qt\5.14.2\msvc2017_64\bin\qmake.exe "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared warn_off console single_arch" "QMAKE_LIBDIR += C:\\openssl\\lib C:\\Utils\\my_sql\\mysql-5.7.25-winx64\\lib C:\\Utils\\postgresql\\pgsql\\lib" "INCLUDEPATH += C:\\openssl\\include C:\\Utils\\my_sql\\mysql-5.7.25-winx64\\include C:\\Utils\\postgresql\\pgsql\\include" "QMAKE_USE += tds" "QMAKE_LIBS_TDS = -lNTWDBLIB" C:/Qt/5.14.2/Src/qtbase/src/plugins/sqldrivers/config.tests/tds
          > Project ERROR: msvc-version.conf loaded but QMAKE_MSC_VER isn't set
           => source failed verification.
          Trying source 1 (type sybaseEnv) of library tds ...
            => source failed condition '!config.win32'.
          test config.sqldrivers.libraries.tds FAILED
          
          
          1 Reply Last reply
          0
          • M Offline
            M Offline
            MEMekaniske
            wrote on 20 Apr 2020, 09:17 last edited by
            #19

            Ok.

            There is a environment setup quide for QT MSCV here:
            https://wiki.qt.io/Building_Qt_Desktop_for_Windows_with_MSVC

            Tells you to create a bat file with your environment settings,
            There is also a lot you probably do not need to have in here, so just modify to fit your needs, or re-install the qt build kits..

            @ECHO OFF
            
            set DEV=C:set QTDIR=%DEV%set PATH=%SystemRoot%;%SystemRoot%32;%QTDIR%
            
            echo Setting OpenSSL Env.
            set OPENSSL=%DEV%set PATH=%OPENSSL%;%PATH%
            set LIB=%OPENSSL%set INCLUDE=%OPENSSL%
            
            echo Setting NASM Env.
            set PATH=%DEV%;%PATH%
            
            echo Setting DirectX Env.
            set LIB=%DEV%SDK\Lib\x86;%LIB%
            set INCLUDE=%DEV%SDK\Include;%INCLUDE%
            
            echo Setting Windows SDK Env.
            set WindowsSdkDir=%DEV%7.1 SDK
            set PATH=%WindowsSdkDir%;%PATH%
            set LIB=%WindowsSdkDir%;%LIB%
            set INCLUDE=%WindowsSdkDir%;%INCLUDE%
            set TARGET_CPU=x86
            
            echo Setting MSVC2010 Env.
            set VSINSTALLDIR=%DEV%set VCINSTALLDIR=%DEV%set DevEnvDir=%VSINSTALLDIR%7\IDE
            set PATH=%VCINSTALLDIR%;%VSINSTALLDIR%7\Tools;%VSINSTALLDIR%7\IDE;%VCINSTALLDIR%;%PATH%
            set INCLUDE=%VCINSTALLDIR%;%INCLUDE%
            set LIB=%VCINSTALLDIR%;%LIB%
            set LIBPATH=%VCINSTALLDIR%
            
            echo Setting Framework Env.
            set FrameworkVersion=v4.0.30319
            set Framework35Version=v3.5
            set FrameworkDir=%SystemRoot%.NET\Framework
            set LIBPATH=%FrameworkDir%amp;#37;FrameworkVersion%;%FrameworkDir%amp;#37;Framework35Version%;%LIBPATH%
            set PATH=%LIBPATH%;%PATH%
            
            echo Env. ready.
            
            title Qt Framework 4.7.1 Development Kit.
            
            cd %DEV%
            
            1 Reply Last reply
            0
            • T Offline
              T Offline
              Thombou
              wrote on 20 Apr 2020, 09:43 last edited by
              #20

              I have added the path to vcvarsall.bat in my path and I ran the command bcvarsall.bat amd64. After this, I have nmake in my path so that's ok.

              I deleted the source component and I am making a fresh install now. I will start the compilation of the plugin after that.

              1 Reply Last reply
              0
              • T Offline
                T Offline
                Thombou
                wrote on 20 Apr 2020, 10:52 last edited by Thombou
                #21

                Hi again,
                So, Now i managed to do a proper installation of the plugin I guess. I now have in my C:\Qt\5.14.2\msvc2017_64\plugins\sqldrivers folder the qsqlmysql.dll and qsqlmysqld.dll.

                I put the libmysql.dll in the same directory as my .exe file but I still have the same problem...

                Here is part of the output

                Cannot load library C:\Qt\5.14.2\msvc2017_64\plugins\sqldrivers\qsqlmysqld.dll: The specified module could not be found.
                QLibraryPrivate::loadPlugin failed on "C:/Qt/5.14.2/msvc2017_64/plugins/sqldrivers/qsqlmysqld.dll" : "Cannot load library C:\Qt\5.14.2\msvc2017_64\plugins\sqldrivers\qsqlmysqld.dll: The specified module could not be found."

                However in the directory it looks in I have the file:
                924fd9ac-5583-4f8c-a2b0-d9428487547a-image.png

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  MEMekaniske
                  wrote on 20 Apr 2020, 11:13 last edited by
                  #22

                  What if you now do as I have with my dlls, copy them to build where exe is in a folder sqldrivers.

                  If that won't work. There should be someone more competent on here that can help.
                  Everything seems fine to me regarding paths, versions etc.

                  Hope you manage to solve this :)

                  1 Reply Last reply
                  0
                  • T Offline
                    T Offline
                    Thombou
                    wrote on 20 Apr 2020, 11:53 last edited by
                    #23

                    Same issue...
                    Can it be due to the compiler I use? As I mentioned I had to run the vcvarsall.bat file, where I have different options
                    0ba9b01d-f30f-41b6-b448-c7e19dd6ee8c-image.png
                    I chose amd64 which is the same as the one I use to compile my qt projects.

                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      MEMekaniske
                      wrote on 20 Apr 2020, 12:20 last edited by
                      #24

                      Everything seems to be right with compiler etc, because you get the ddls placed in the correct directories for the MSCV2017..
                      And since you use same architecture type on both builds there should be noe problem there either..

                      A quick fix for you is to use these:
                      https://github.com/thecodemonkey86/qt_mysql_driver/releases/tag/qmysql_5.14.2

                      But I suggest that you also check in on this thread to see if someone has answers leading to a permanent fix for future builds.
                      Or you can try the process again with mingw and see if that gives the same output etc, then at least you know if the environment for mscv is correct if the outputs are the same.

                      T 1 Reply Last reply 20 Apr 2020, 12:32
                      1
                      • M MEMekaniske
                        20 Apr 2020, 12:20

                        Everything seems to be right with compiler etc, because you get the ddls placed in the correct directories for the MSCV2017..
                        And since you use same architecture type on both builds there should be noe problem there either..

                        A quick fix for you is to use these:
                        https://github.com/thecodemonkey86/qt_mysql_driver/releases/tag/qmysql_5.14.2

                        But I suggest that you also check in on this thread to see if someone has answers leading to a permanent fix for future builds.
                        Or you can try the process again with mingw and see if that gives the same output etc, then at least you know if the environment for mscv is correct if the outputs are the same.

                        T Offline
                        T Offline
                        Thombou
                        wrote on 20 Apr 2020, 12:32 last edited by Thombou
                        #25

                        @MEMekaniske Thanks a lot! That works now.
                        It turns out that it is my libmysql.dll file that was not working.
                        I did different test and I figured out that if I just replace this file by the one provided in the link and keeping all other dll as I built them, it works.
                        I found my libmysql.dll file in the installation folder of my mysql server C:\Program Files\MySQL\MySQL Server 8.0. Any idea of what could be wrong about this one?

                        K 1 Reply Last reply 20 Apr 2020, 12:47
                        0
                        • M Offline
                          M Offline
                          MEMekaniske
                          wrote on 20 Apr 2020, 12:45 last edited by
                          #26

                          That is good :)

                          Ok, only thing I can think of then is that the MySQL Server 8.0 installed is for a different architecture and cannot be used with amd64, maybe if you just download and install the versions that can be installed on your architecture and try with each of them to see if there is any difference.

                          If not, I guess it is a bug for the mysql community/support to take a look at

                          1 Reply Last reply
                          2
                          • T Thombou
                            20 Apr 2020, 12:32

                            @MEMekaniske Thanks a lot! That works now.
                            It turns out that it is my libmysql.dll file that was not working.
                            I did different test and I figured out that if I just replace this file by the one provided in the link and keeping all other dll as I built them, it works.
                            I found my libmysql.dll file in the installation folder of my mysql server C:\Program Files\MySQL\MySQL Server 8.0. Any idea of what could be wrong about this one?

                            K Offline
                            K Offline
                            kshegunov
                            Moderators
                            wrote on 20 Apr 2020, 12:47 last edited by
                            #27

                            @Thombou said in Mysql not defined when compiling mysql driver:

                            I did different test and I figured out that if I just replace this file by the one provided in the link and keeping all other dll as I built them, it works.

                            Did you check that the arch matches between the plugin and the client library? I'd hazard a guess that's what was wrong. Anyway, as you have it solved it wouldn't matter that much.

                            Read and abide by the Qt Code of Conduct

                            T 1 Reply Last reply 20 Apr 2020, 14:11
                            0
                            • K kshegunov
                              20 Apr 2020, 12:47

                              @Thombou said in Mysql not defined when compiling mysql driver:

                              I did different test and I figured out that if I just replace this file by the one provided in the link and keeping all other dll as I built them, it works.

                              Did you check that the arch matches between the plugin and the client library? I'd hazard a guess that's what was wrong. Anyway, as you have it solved it wouldn't matter that much.

                              T Offline
                              T Offline
                              Thombou
                              wrote on 20 Apr 2020, 14:11 last edited by
                              #28

                              @kshegunov What do you call the client library? The libmysql.dll?

                              K 1 Reply Last reply 20 Apr 2020, 14:12
                              0
                              • T Thombou
                                20 Apr 2020, 14:11

                                @kshegunov What do you call the client library? The libmysql.dll?

                                K Offline
                                K Offline
                                kshegunov
                                Moderators
                                wrote on 20 Apr 2020, 14:12 last edited by
                                #29

                                @Thombou said in Mysql not defined when compiling mysql driver:

                                What do you call the client library? The libmysql.dll?

                                Yes!

                                Read and abide by the Qt Code of Conduct

                                T 1 Reply Last reply 20 Apr 2020, 14:22
                                0
                                • K kshegunov
                                  20 Apr 2020, 14:12

                                  @Thombou said in Mysql not defined when compiling mysql driver:

                                  What do you call the client library? The libmysql.dll?

                                  Yes!

                                  T Offline
                                  T Offline
                                  Thombou
                                  wrote on 20 Apr 2020, 14:22 last edited by Thombou
                                  #30

                                  @kshegunov I downloaded it from here https://dev.mysql.com/downloads/windows/installer/8.0.html.
                                  As it is installed in the Program Files and not the Program Files (x86) directory I'd say it's 64bits...
                                  Plus, this is what I installed so:
                                  4dec0bb9-2b74-4299-b658-851e8881cc69-image.png

                                  M 1 Reply Last reply 20 Apr 2020, 14:31
                                  0
                                  • T Thombou
                                    20 Apr 2020, 14:22

                                    @kshegunov I downloaded it from here https://dev.mysql.com/downloads/windows/installer/8.0.html.
                                    As it is installed in the Program Files and not the Program Files (x86) directory I'd say it's 64bits...
                                    Plus, this is what I installed so:
                                    4dec0bb9-2b74-4299-b658-851e8881cc69-image.png

                                    M Offline
                                    M Offline
                                    MEMekaniske
                                    wrote on 20 Apr 2020, 14:31 last edited by
                                    #31

                                    @Thombou It says X64 under the architecture tab so should be the correct version.

                                    1 Reply Last reply
                                    1
                                    • M Offline
                                      M Offline
                                      MEMekaniske
                                      wrote on 20 Apr 2020, 14:35 last edited by
                                      #32

                                      Also, if you go into the "Add" tab, then expand MySQL Servers, then expand MySQL Server, then choose MySQL Server 8.0 you get the option to choose the availiable architectures :)

                                      1 Reply Last reply
                                      0
                                      • T Offline
                                        T Offline
                                        Thombou
                                        wrote on 20 Apr 2020, 15:41 last edited by
                                        #33

                                        Yes that's what I di not understand. it seems that I have the correct version but a wrong version of the libmysql.dll... Anyway, i hope that it is fixed now, and that I won't have other surprises like that later on.
                                        Thank you very much for your help! It is much appreciated!

                                        M 1 Reply Last reply 20 Apr 2020, 16:03
                                        1
                                        • T Thombou
                                          20 Apr 2020, 15:41

                                          Yes that's what I di not understand. it seems that I have the correct version but a wrong version of the libmysql.dll... Anyway, i hope that it is fixed now, and that I won't have other surprises like that later on.
                                          Thank you very much for your help! It is much appreciated!

                                          M Offline
                                          M Offline
                                          MEMekaniske
                                          wrote on 20 Apr 2020, 16:03 last edited by
                                          #34

                                          @Thombou Yeah it is very frustrating.. hope all goes well with the next version!
                                          Glad i could help :)

                                          1 Reply Last reply
                                          1

                                          24/39

                                          20 Apr 2020, 12:20

                                          • Login

                                          • Login or register to search.
                                          24 out of 39
                                          • First post
                                            24/39
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved