How to create the plugin of MYSQL for Qt



  • Hi, having just solved the problem, i want to share how i managed to do it, and i have to admit that it was really painfull ^^

    1. Download : the mingw utilities here, and MySQL community server from the official site.

    2. Once you download the mingw utilities extract it, and then go to the bin directory, and copy everything to the bin directory of Qt, I copied it into : C:\Qt\Qt5.2.0\5.2.0\mingw48_32\bin, find a similar reference, once you do, install MySQL in C:\, once it's done, name the directory MySQL to simplify your life for the coming.

    3. Now that you have everything set, open the Qt DOS prompt it should be installed, I have Win8 so i have a link to it, at the home screen.

    4. Type this command : cd C:\MYSQL\lib, then : reimp libmysql.dll, then : dlltool -k -d libmysql.def -l libmysql.a.

    5. Now type : cd C:\Qt\Qt5.2.0\5.2.0\Src\qtbase, then type : configure.exe -debug-and-release -platform win32-g++ -qt-sql-mysql -l mysql -I C:\MySQL\MySQL51\include -L C:\MySQL\MySQL51\lib\opt
      you will have to wait for a long time, so go drink something. Then type mingw32-make sub-src.

    6. Now type : cd C:\Qt\Qt5.2.0\5.2.0\Src\qtbase\src\plugins\sqldrivers\mysql,
      and qmake "INCLUDEPATH+=C:/MySQL/include" "LIBS+=C:/MYSQL/lib//libmysql.lib" mysql.pro.

    7. Finally : mingw32-make

    After that you will have 4 new Files in C:\Qt\Qt5.2.0\5.2.0\Src\qtbase\plugins\sqldrivers
    wich are :

    • libqsqlmysql.a
    • libqsqlmysqld.a
    • qsqlmysql.dll
    • qsqlmysqld.dll

    Congratulations now so that Qt Creator recognize them, put them at C:\Qt\Qt5.2.0\Tools\QtCreator\bin\plugins\sqldrivers, and put it in the bin directory

    Note : I assume that you have installed Qt in C:\ , i have done the default installation so if you did the same, you want find any problem, and it's the Qt version with the mingw

    Hope it will help you, and be careful in naming your driver in the code of your application, it is QMYSQL.

    [Topic has been locked as a general information source. If you still have problems start a new thread on the boards! ~kshegunov]
    [Formatting was updated ~kshegunov]



  • That's great!
    Thank you BlackStar for sharing this solution :)



  • ^^ you are very welcome



  • I must say that's really a painfull task.
    which you make some sort of easy thank BlackStar ! Nicely explain !!!



  • Thanks ^^ !



  • Maria dBase is free, and is mostly compatible with Mysql, and is shipped with most Linux distribution, why can't this be included in the box standard Qt, it would save many a lot of frustration, as we have to do-it every time we 'upgrade', because of license issues. For the guy who really needs MySql could do-it this , but for the other 98% a Maria driver should be fine. Does any one knows why Maria driver could not be shipped with Qt?



  • This is Awesome....Great Job..BlackStar.



  • How to create on for linux (ubuntu)? Pls Help......



  • Does that work for OS X 10.9


  • Lifetime Qt Champion

    Hi both,

    Like written in the post, these instructions are for Windows. Linux and OS X are far less problematic. On OS X install mysql through e.g. macports with sudo port install mysql56 and on Linux, install the mysql dev packages.

    For the rest just follow Qt's Sql Driver documentation



  • I recently ran into an issue with mysql (mariadb) in a linux environment - apparently, the 5.3.1 release ties to an older version of mysql that my system no longer supports (apparently, qt-5.3.1-release wants version .16, while my system uses .18). If you have this problem, an ldd of /path/to/qt5/plugins/sqldrivers/libqsqlmysql.so should show that it can't find your mysql libs. To fix this, go into the source directory at qtbase/src/plugins/sqldrivers/mysql, run qmake (specifically for 5.3.1, not the system qmake), and then make install.



  • Even today Qt doesn't have a MySql proper plugin delivered with? any way.. thanks for this great job... that save me a lot of trouble I wish to do something similar with HeidiSql and this was a good start point.. Thanks again



  • You're all welcome :), for the guys who are asking for linux or Os X, but i don't know :(, try to fetch the doc.



  • Hello, I'm new to QT and I have installed QT from this installer on Windows 7 64bit:
    qt-opensource-windows-x86-1.6.0-5-online.exe

    but I don't see the src folder and I don't have a QT Sdk. How can I install the sdk? thanks.


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    You need to first install the sources. Use the installer for that



  • OK now I have installed the sources (maybe) and I have a folder called Src, this is my path: C:\Qt\5.3\Src.

    I try to follow the tutorial but in my situation when prompt "reimp libmysql.dll" I receive this message:

    "reimp: libmysql.dll: invalid or corrupt import library"

    but if prompt "reimp libmysql.lib" seems to work.



  • now I'm arrived to step 5 but I think I have some problem, this is the ouput after lunch the command:

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

    Creating qmake...
    mingw32-make: Nothing to be done for 'first'.
    Running configuration tests...
    g++: error: CreateProcess: No such file or directory
    mingw32-make: *** [arch.o] Error 1
    Could not find output file: No such file or directory
    WARNING: The DirectX SDK could not be detected:
    There is no Direct X SDK installed or the environment variable "DXSDK_DIR" is
    not set.
    Disabling the ANGLE backend.

    WARNING: Using OpenGL ES 2.0 without ANGLE.
    Specify -opengl desktop to use Open GL.
    The build will most likely fail.


  • Lifetime Qt Champion

    Either install the Direct X SDK or pass -opengl desktop to configure



  • I'm sorry and frustrated but
    but unfortunately for me it is the first time with C++ and QT.
    I lunch configure:

    configure.exe -opengl desktop

    and the result is:

    g++ -c -o qlibraryinfo.o -DUNICODE -ffunction-sections -g -IC:\Qt\5.3\Src\qtbas
    e/qmake -IC:\Qt\5.3\Src\qtbase/qmake/library -IC:\Qt\5.3\Src\qtbase/qmake/genera
    tors -IC:\Qt\5.3\Src\qtbase/qmake/generators/unix -IC:\Qt\5.3\Src\qtbase/qmake/g
    enerators/win32 -IC:\Qt\5.3\Src\qtbase/qmake/generators/mac -IC:\Qt\5.3\Src\qtba
    se/qmake/generators/integrity -IC:\Qt\5.3\Src\qtbase\include -IC:\Qt\5.3\Src\qtb
    ase\include/QtCore -IC:\Qt\5.3\Src\qtbase\include/QtCore/5.3.2 -IC:\Qt\5.3\Src\q
    tbase\include/QtCore/5.3.2/QtCore -IC:\Qt\5.3\Src\qtbase/src/corelib/global -DHA
    VE_QCONFIG_CPP -IC:\Qt\5.3\Src\qtbase\mkspecs\win32-g++ -IC:\Qt\5.3\Src\qtbase/t
    ools/shared -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DPROEVALUATOR_FULL -DQT_NO_TEXTC
    ODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_COMPRESS -DQT_NO_THREAD -DQ
    T_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM -DQT_CRYPTOGRAPHICHASH_ONLY
    SHA1 -DQT_JSON_READONLY C:\Qt\5.3\Src\qtbase/src/corelib/global/qlibraryinfo.cp
    p
    g++: error: CreateProcess: No such file or directory
    Makefile:275: recipe for target 'qlibraryinfo.o' failed
    mingw32-make: *** [qlibraryinfo.o] Error 1
    rm -f project.o option.o property.o main.o ioutils.o proitems.o qmakevfs.o qmake
    globals.o qmakeparser.o qmakeevaluator.o qmakebuiltins.o makefile.o unixmake2.o
    unixmake.o mingw_make.o winmakefile.o projectgenerator.o meta.o makefiledeps.o m
    etamakefile.o xmloutput.o pbuilder_pbx.o msvc_vcproj.o msvc_vcxproj.o msvc_nmake
    .o msvc_objectmodel.o msbuild_objectmodel.o gbuild.o cesdkhandler.o qtextcodec.o
    qutfcodec.o qstring.o qstring_compat.o qstringbuilder.o qtextstream.o qiodevice
    .o qmalloc.o qglobal.o qarraydata.o qbytearray.o qbytearraymatcher.o qdatastream
    .o qbuffer.o qlist.o qfiledevice.o qfile.o qfilesystementry.o qfilesystemengine.
    o qfsfileengine.o qfsfileengine_iterator.o qregexp.o qvector.o qbitarray.o qdir.
    o qdiriterator.o quuid.o qhash.o qfileinfo.o qdatetime.o qstringlist.o qabstract
    fileengine.o qtemporaryfile.o qmap.o qmetatype.o qsettings.o qsystemerror.o qlib
    raryinfo.o qvariant.o qvsnprintf.o qlocale.o qlocale_tools.o qlinkedlist.o qnume
    ric.o qcryptographichash.o qxmlstream.o qxmlutils.o qlogging.o qjson.o qjsondocument.o qjsonparser.o qjsonarray.o qjsonobject.o qjsonvalue.o qfilesystemengine_w
    in.o qfilesystemiterator_win.o qfsfileengine_win.o qlocale_win.o qsettings_win.o
    qsystemlibrary.o registry.o
    g++ -c -o project.o -DUNICODE -ffunction-sections -g -IC:\Qt\5.3\Src\qtbase/qma
    ke -IC:\Qt\5.3\Src\qtbase/qmake/library -IC:\Qt\5.3\Src\qtbase/qmake/generators
    -IC:\Qt\5.3\Src\qtbase/qmake/generators/unix -IC:\Qt\5.3\Src\qtbase/qmake/genera
    tors/win32 -IC:\Qt\5.3\Src\qtbase/qmake/generators/mac -IC:\Qt\5.3\Src\qtbase/qm
    ake/generators/integrity -IC:\Qt\5.3\Src\qtbase\include -IC:\Qt\5.3\Src\qtbase\i
    nclude/QtCore -IC:\Qt\5.3\Src\qtbase\include/QtCore/5.3.2 -IC:\Qt\5.3\Src\qtbase
    \include/QtCore/5.3.2/QtCore -IC:\Qt\5.3\Src\qtbase/src/corelib/global -DHAVE_QC
    ONFIG_CPP -IC:\Qt\5.3\Src\qtbase\mkspecs\win32-g++ -IC:\Qt\5.3\Src\qtbase/tools/
    shared -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DPROEVALUATOR_FULL -DQT_NO_TEXTCODEC
    -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_COMPRESS -DQT_NO_THREAD -DQT_NO

    QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM -DQT_CRYPTOGRAPHICHASH_ONLY_SHA1
    -DQT_JSON_READONLY C:\Qt\5.3\Src\qtbase/qmake/project.cpp
    g++: error: CreateProcess:* No such file or directory*
    Makefile:196: recipe for target 'project.o' failed
    mingw32-make: *** [project.o] Error 1
    Building qmake failed, return code 2


  • Lifetime Qt Champion

    Just one question, do you only need to build the MySQL plugin ? If so, there's no need to rebuild Qt completely



  • This is the first time for me with C++ and QT so for me it's all new and I do not know what are the requirements needed to achieve my goal.
    I want to make a windows application that keep some signal from a RFID antenna attached to notebook from serial and store data in a mysql database.
    To start I want only to connect to mysql database and read a table data.

    So I guess I need only mysql plugin.


  • Lifetime Qt Champion

    Then just compile the MySQL plugin like described in the documentation, no need to rebuild everything.



  • @
    case "re":
    include("$folderPath_php/write.php");
    break;
    case "re_ok":
    include("$folderPath_php/write_ok.php");
    break;
    case "del":
    include("$folderPath_php/del_ok.php");
    break;
    case "all_del_ok":
    include("$folderPath_php/all_del_ok.php");
    break;
    case "all_move_ok":
    include("$folderPath_php/all_move_ok.php");
    break;
    default:
    include("$folderPath_php/list.php");
    break;
    @


  • Lifetime Qt Champion

    What does that message have to do with the current question ?



  • what about other platform?


  • Lifetime Qt Champion

    Can you be more specific ?



  • Hi all,

    after trying to build mysql plugin now I cannot to compile a simple hello world project, the error is:

    g++: error: CreateProcess: No such file or directory

    this is my debugger output:

    @11:46:35: Running steps for project CEV-Crono...
    11:46:35: Configuration unchanged, skipping qmake step.
    11:46:35: Starting: "C:\Qt\5.3\mingw482_32\bin\mingw32-make.exe"
    C:/Qt/5.3/mingw482_32/bin/mingw32-make -f Makefile.Debug
    mingw32-make[1]: Entering directory 'F:/WORKSPACE/CPP/build-CEV-Crono-Desktop_Qt_5_3_MinGW_32bit-Debug'
    g++ -c -pipe -fno-keep-inline-dllexport -g -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\CEV-Crono -I"C:\Qt\5.3\mingw482_32\include" -I"C:\Qt\5.3\mingw482_32\include\QtWidgets" -I"C:\Qt\5.3\mingw482_32\include\QtGui" -I"C:\Qt\5.3\mingw482_32\include\QtCore" -I"debug" -I"." -I"." -I"C:\Qt\5.3\mingw482_32\mkspecs\win32-g++" -o debug\main.o ..\CEV-Crono\main.cpp
    g++: error: CreateProcess: No such file or directory
    Makefile.Debug:341: recipe for target 'debug/main.o' failed
    mingw32-make[1]: *** [debug/main.o] Error 1
    mingw32-make[1]: Leaving directory 'F:/WORKSPACE/CPP/build-CEV-Crono-Desktop_Qt_5_3_MinGW_32bit-Debug'
    Makefile:34: recipe for target 'debug' failed
    mingw32-make: *** [debug] Error 2
    11:46:35: The process "C:\Qt\5.3\mingw482_32\bin\mingw32-make.exe" exited with code 2.
    Error while building/deploying project CEV-Crono (kit: Desktop Qt 5.3 MinGW 32bit)
    When executing step "Make"
    11:46:35: Elapsed time: 00:01.@



  • That would of been useful about 2 months ago, but thanks for posting it



  • This post is deleted!


  • I m sorry for not being able to reply ^^ cause i ve moved to the web development world for a moment, thus i have forgotten about this post! anyway the instructions i did were for Windows, but i never tried the other platforms tough :/ sorry! @massum, and a big thanks to @SGaist ^^


  • Lifetime Qt Champion

    Each platform has it's own gotchas but the *nix variants are generally more easy to deal with when it comes to dependencies like MySQL

    You're welcome :)



  • Hello EveryOne,
    I am a beginner to qt and unable to build a mysql driver. I'am stuck at step4 of above given steps.
    reimp -d libmysql.dll ,gives me error
    "reimp: libmysql.dll: invalid or corrupt import library"

    iam also unable to
    reimp libmysql.lib, gives me error
    "reimp: libmysql.lib: invalid or corrupt import library"

    reimp.exe is available from mingw-utils-0.3, but i am totally frustrated now due to failure occured multiple times.
    I need help urgently, since project deadline is near. Will anyone please upload libqsqlmysql.a and qsqlmysql.dll on any ftp site or mail me these as an attachment. i followed all the given steps, but failed to compile.
    my mail id is: technosujit25@gmail.com
    plz guys,help me!!!!!
    I seriously need ur help in order to complete this project.



  • Why cannot QSqlQuery execute "exit" sentence, but can execute other general query sentences?


  • Moderators

    @flydragon

    Do not duplicate posting because you do not get an answer immendiately.

    [edit:koahnig see https://forum.qt.io/topic/82629/why-qsqlquery-exec-exit-failed ]


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.