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 ^^
-
Download : the mingw utilities here, and MySQL community server from the official site.
-
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 inC:\
, once it's done, name the directory MySQL to simplify your life for the coming. -
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.
-
Type this command :
cd C:\MYSQL\lib
, then :reimp libmysql.dll
, then :dlltool -k -d libmysql.def -l libmysql.a
. -
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 typemingw32-make sub-src
. -
Now type :
cd C:\Qt\Qt5.2.0\5.2.0\Src\qtbase\src\plugins\sqldrivers\mysql
,
andqmake "INCLUDEPATH+=C:/MySQL/include" "LIBS+=C:/MYSQL/lib//libmysql.lib" mysql.pro
. -
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 directoryNote : 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 mingwHope 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] -
-
I must say that's really a painfull task.
which you make some sort of easy thank BlackStar ! Nicely explain !!! -
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......
-
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
-
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. -
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 -
Just one question, do you only need to build the MySQL plugin ? If so, there's no need to rebuild Qt completely