error while connection to Database



  • Hello,

    i have a problem with the connection to my MySQL database.
    when ever i try to start my programm in debug mode, i get the error:
    "The inferior stopped because it received a signal from the operating system.

    Signal name: SIGSEGV
    Signal meaning : Segmentation fault. "

    i get this error in the first line of the code :

    db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName(DBHostName);
    db.setDatabaseName(DatabaseName);
    db.setUserName(UserName);
    db.setPassword(Password);
    db.setPort(Port);
    

    maybe i linked something wrong?



  • @Allerknappe
    Almost certainly (I assume), you have not installed the QMYSQL driver and/or the necessary bits of Qt to connect to database/MySQL under Linux, or the correct versions, or whatever. Your code in itself as presented looks fine.

    You might get some further indication if you run your program from within gdb and look at the stack trace (bt command, I think) when it segments....


  • Moderators

    @Allerknappe said in error while connection to Database:

    i get this error in the first line of the code

    i would say the crash is not related to the lines of code you've posted.
    How do you know it's that line of code? Did you run it in the debugger?

    A missing mysql lib won't cause a seg fault. It would just prevent the plugin from being loaded successfully, but it wouldn't cause a crash.



  • @raven-worx said in error while connection to Database:

    @Allerknappe said in error while connection to Database:

    i get this error in the first line of the code

    i would say the crash is not related to the lines of code you've posted.
    How do you know it's that line of code? Did you run it in the debugger?

    A missing mysql lib won't cause a seg fault. It would just prevent the plugin from being loaded successfully, but it wouldn't cause a crash.

    The OP stated "i get this error in the first line of the code", so I took him at his word! :) Anyway a back trace in gdb should confirm.

    A missing mysqllib etc. may not crash, but the wrong/inconsistent versions of the necessary libmysqlqt or whatever it's called and other libraries under Linux can do, in my experience... :)



  • ok thanks for the fast answers,

    i see now that i have skipped the section with the QMYSQL driver so that i never have installed some driver :( ...
    now i tried the description from here sql-driver but how so often i think i do something wrong.
    i loaded the mysql installer for the needed .lib and then i try to run:

    cd $QTDIR/qtbase/src/plugins/sqldrivers/mysql
    qmake "INCLUDEPATH+=C:/mysql/MySQL/MySQLConnector.C6.1/include" "LIBS+=C:/mysql/MySQL/MySQLServer5.7/lib/libmysql.lib" mysql.pro
    make

    After this i try to set my configure for the mysql database :
    c:\qt\5.9.1\Src>configure -sql-mysql

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

    you have some experience with my problem?

    thanks a lot



  • so i tried this:

    ****Works for me on Windows with Qt SDK 5.6.0 (32bit version with mingw 4.9.2 32bit included) :

    • Downloaded MySQL 32bit in zip archive (mine was v5.7.11)
    • Extracted it to C:/MySQL
    • Copied "C:\Qt\QMySQL\lib\libmysql.dll" and "C:\Qt\QMySQL\lib\libmysqld.dll" to Windows/System32 (to avoid the "cannot found -llibmysql" compilation error)
    • Compile with "How to Build the QMYSQL Plugin on Windows" on http://doc.qt.io/qt-5/sql-driver.html#qmysql (my command was "qmake "INCLUDEPATH+=C:\Qt\QMySQL\include" "LIBS+=C:\Qt\QMySQL\lib\libmysql.lib" sql.pro" and "mingw32-make")
    • After compilation succeeded, copy (the freshly compiled) Qt5Sql.dll & Qt5Sqld.dll from "C:\Qt\Qt5.6.0\5.6\Src\qtbase\lib" to your application build directory
    • Restart QtCreator, that should work*****

    but when i run the cmd with this statements i get this outline:

    **C:\qt\5.9.1\mingw53_32>cd C:\qt\5.9.1\Src\qtbase\src\plugins\sqldrivers\mysql

    C:\qt\5.9.1\Src\qtbase\src\plugins\sqldrivers\mysql>qmake "INCLUDEPATH+=C:\mysql\MySQL\MySQLConnector.C6.1\include" "LIBS+=C:\mysql\MySQL\MySQLConnector.C6.1\lib\libmysql.lib" mysql.pro

    C:\qt\5.9.1\Src\qtbase\src\plugins\sqldrivers\mysql>make
    make -f Makefile.Release all
    make[1]: Entering directory 'C:/qt/5.9.1/Src/qtbase/src/plugins/sqldrivers/mysql'
    make[1]: Nothing to be done for 'all'.
    make[1]: Leaving directory 'C:/qt/5.9.1/Src/qtbase/src/plugins/sqldrivers/mysql'
    make -f Makefile.Debug all
    make[1]: Entering directory 'C:/qt/5.9.1/Src/qtbase/src/plugins/sqldrivers/mysql'
    make[1]: Nothing to be done for 'all'.
    make[1]: Leaving directory 'C:/qt/5.9.1/Src/qtbase/src/plugins/sqldrivers/mysql'**

    the C:\qt\5.9.1\Src\qtbase\lib directory is also empty so that only the README said, that i´m probably forget to compile the qt library, and yes i never compile something i only install qt and compile in the creator my code.

    some help?



  • ok now i run all the process from this http://doc.qt.io/qt-5/windows-building.html website.
    Everything seems ok, but still i get the error:
    ERROR: Feature 'sql-mysql' was enabled, but the pre-condition 'libs.mysql' failed.
    maybe some help`?



  • So i tried new things:
    i do all the things in the win cmd. it propably worked all well, till the end:
    configure -debug -nomake examples -opensource #done
    make #done
    make install #done
    cd C:\mysql\MySQL\MySQLConnector.C6.1\lib #done
    reimp -d libmysql.lib #done
    dlltool -k -d libmysql.def -l libmysql.a #done
    cd C:\qt\5.9.1\Src #done
    configure -I C:\mysql\MySQL\MySQLConnector.C6.1\include -L C:\mysql\MySQL\MySQLConnector.C6.1\lib #done
    make sub-src #done
    make install #done
    cd C:\qt\5.9.1\Src\qtbase\src\plugins\sqldrivers\mysql
    qmake "INCLUDEPATH+=C:\mysql\MySQL\MySQLConnector.C6.1\include" "LIBS+=-L. mysql" mysql.pro
    make

    the make statement gives me the following error:

    ql_mysql_p.o -LC:\utils\my_sql\my_sql\lib -LC:\utils\postgresql\pgsql\lib -L. mysql -LC:\qt\5.9.1\Src\qtbase\lib C:\qt\5.9.1\Src\qtbase\lib\libQt5Sql.a C:\qt\5.9.1\Src\qtbase\lib\libQt5Core.a .obj\release\qsqlmysql_resource_res.o
    g++: error: mysql: No such file or directory
    Makefile.Release:67: recipe for target 'C:\qt\5.9.1\Src\qtbase\plugins\sqldrivers\qsqlmysql.dll' failed
    make[1]: *** [C:\qt\5.9.1\Src\qtbase\plugins\sqldrivers\qsqlmysql.dll] Error 1
    make[1]: Leaving directory 'C:/qt/5.9.1/Src/qtbase/src/plugins/sqldrivers/mysql'
    Makefile:40: recipe for target 'release-all' failed

    i have also find in the qt4.9 description additional these steps after my end:

    Now the following libraries are ready in C:\Qt\4.6.2\plugins\sqldrivers.

    libqsqlmysql4.a
    libqsqlmysqld4.a
    qsqlmysql4.dll
    qsqlmysqld4.dll
    

    ok i dont have the 4 at the end of the filename but i find the qsqlmysqld but not the qsqlmysql.dll , it seems that this file will not creat. But why?



  • so i try to install qt 5.9.2 new .
    have someone a step-by-step installation guide from a new installation to a working mysql plugin ?



  • @Allerknappe

    Now the following libraries are ready in C:\Qt\4.6.2\plugins\sqldrivers.

    Sorry, you seem to be saying either you have Qt4 SQL drivers for your Qt5 build, or you have Qt5 drivers but you've placed them in a directory named for Qt4 which I would guess is not looked at by Qt5??



  • yes in my frustration i tried the installation guide How to Build the QMYSQL Plugin on Windows from the qt 4.9 part. i now that i use 5.9.1 but the 5.9 installation guide seems not to be working... so i tried the other guide and only change the 4.9 path to 5.9



  • @Allerknappe said in error while connection to Database:

    and only change the 4.9 path to 5.9

    Earlier you wrote:

    Now the following libraries are ready in C:\Qt\4.6.2\plugins\sqldrivers

    I leave you to verify your paths and that they are being searched correctly for 5.9.



  • yeah sorry for the mistake i copied from a other side where the path was for 4.9 , for me i changed the path to 5.9



  • ok, how i solve this problem :

    C:\qt\5.9.2\Src\qtlocation\src\3rdparty\mapbox-gl-native/src/mbgl/gl/value.cpp:185: undefined reference to glBlendEquation@4' C:\qt\5.9.2\Src\qtlocation\lib\libqmapboxgld.a(value.o): In functionZN4mbgl2gl5value10BlendColor3SetERKNS_5ColorE':
    C:\qt\5.9.2\Src\qtlocation\src\3rdparty\mapbox-gl-native/src/mbgl/gl/value.cpp:212: undefined reference to glBlendColor@16' C:\qt\5.9.2\Src\qtlocation\lib\libqmapboxgld.a(value.o): In functionZN4mbgl2gl5value7Program3SetERKj':
    C:\qt\5.9.2\Src\qtlocation\src\3rdparty\mapbox-gl-native/src/mbgl/gl/value.cpp:224: undefined reference to glUseProgram@4' C:\qt\5.9.2\Src\qtlocation\lib\libqmapboxgld.a(value.o): In functionZN4mbgl2gl5value13ActiveTexture3SetERKh':
    C:\qt\5.9.2\Src\qtlocation\src\3rdparty\mapbox-gl-native/src/mbgl/gl/value.cpp:248: undefined reference to glActiveTexture@4' C:\qt\5.9.2\Src\qtlocation\lib\libqmapboxgld.a(value.o): In functionZN4mbgl2gl5value15BindFramebuffer3SetERKj':
    C:\qt\5.9.2\Src\qtlocation\src\3rdparty\mapbox-gl-native/src/mbgl/gl/value.cpp:285: undefined reference to `glBindFramebuffer@8'



  • so if i try qmake "INCLUDEPATH+=C:/mysql/MySQL/MySQLConnector.C6.1/include" "LIBS+=C:/mysql/MySQL/MySQLConnector.C6.1/lib/libmysql.lib" mysql.pro
    i only get the error Project ERROR: Library 'mysql' is not defined.
    in the stash file is insert:

    QMAKE_CXX.INCDIRS =
    C:/qt/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0/include
    C:/qt/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0/include-fixed
    C:/qt/Tools/mingw530_32/i686-w64-mingw32/include
    C:/qt/Tools/mingw530_32/i686-w64-mingw32/include/c++
    C:/qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/i686-w64-mingw32
    C:/qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/backward
    QMAKE_CXX.LIBDIRS =
    C:/qt/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0
    C:/qt/Tools/mingw530_32/lib/gcc
    C:/qt/Tools/mingw530_32/i686-w64-mingw32/lib
    C:/qt/Tools/mingw530_32/lib
    QMAKE_CXX.QT_COMPILER_STDCXX = 199711L
    QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 5
    QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 3
    QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0
    QMAKE_CXX.COMPILER_MACROS =
    QT_COMPILER_STDCXX
    QMAKE_GCC_MAJOR_VERSION
    QMAKE_GCC_MINOR_VERSION
    QMAKE_GCC_PATCH_VERSION

    sometimes this hole errors are a little mysterious for me...



  • ok i have a solution for my problem:

    in an other forum i read that mysql and the description how to build the plugin only work till qt version 5.7 .
    so i tried it with 5.7 and now it works! maybe there is a solution for higher versions, but for me it is enough


Log in to reply
 

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