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. QSqlDatabase: QMYSQL driver not loaded / Build MySQL Plugin

QSqlDatabase: QMYSQL driver not loaded / Build MySQL Plugin

Scheduled Pinned Locked Moved Solved Installation and Deployment
qmysqlsqlmoduleubuntu 14.04linux mint
32 Posts 9 Posters 42.3k Views
  • 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.
  • RalfSchaeferR Offline
    RalfSchaeferR Offline
    RalfSchaefer
    wrote on last edited by
    #19

    Hi,

    i'm facing a similiar sort of problem, not completely solvable by the steps above.
    I recompiled the QMYSQL-plugin and it's linked to the correct mysql-libraries.
    After doing ldd /opt/Qt/5.5/gcc_64/plugins/sqldrivers/libqsqlmysql.so I got this:

    ldd /opt/Qt/5.5/gcc_64/plugins/sqldrivers/libqsqlmysql.so 
           linux-vdso.so.1 (0x00007fffd7d83000)
           libmysqlclient.so.18 => /usr/lib64/libmysqlclient.so.18 (0x00007f9eb8607000)
            libz.so.1 => /lib64/libz.so.1 (0x00007f9eb83f0000)
            libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f9eb81b5000)
            libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f9eb7f9d000)
            libssl.so.1.0.0 => /lib64/libssl.so.1.0.0 (0x00007f9eb7d34000)
            libcrypto.so.1.0.0 => /lib64/libcrypto.so.1.0.0 (0x00007f9eb7941000)
            libQt5Sql.so.5 => /opt/Qt/5.5/gcc_64/lib/libQt5Sql.so.5 (0x00007f9eb7701000)
            libQt5Core.so.5 => /opt/Qt/5.5/gcc_64/lib/libQt5Core.so.5 (0x00007f9eb6fba000)
            libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f9eb6d9d000)
            libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f9eb6a1b000)
            libm.so.6 => /lib64/libm.so.6 (0x00007f9eb6719000)
            libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f9eb6502000)
            libc.so.6 => /lib64/libc.so.6 (0x00007f9eb615b000)
            libdl.so.2 => /lib64/libdl.so.2 (0x00007f9eb5f56000)
            libicui18n.so.54 => /opt/Qt/5.5/gcc_64/lib/libicui18n.so.54 (0x00007f9eb5ae8000)
            libicuuc.so.54 => /opt/Qt/5.5/gcc_64/lib/libicuuc.so.54 (0x00007f9eb5739000)
            libicudata.so.54 => /opt/Qt/5.5/gcc_64/lib/libicudata.so.54 (0x00007f9eb3d0f000)
            libgthread-2.0.so.0 => /usr/lib64/libgthread-2.0.so.0 (0x00007f9eb3b0d000)
            librt.so.1 => /lib64/librt.so.1 (0x00007f9eb3904000)
            libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007f9eb35f5000)
            /lib64/ld-linux-x86-64.so.2 (0x000055fc1f3d8000)
            libpcre.so.1 => /usr/lib64/libpcre.so.1 (0x00007f9eb338e000)
    

    So, erverything looks fine here.

    When I try to connect to the database, it still doesn't work. It seems, QSqlDatabase loads the plugin without problems, setting dabase specific stuff fails.

    My code-snippet, containing additional debug-stuff:

        QPluginLoader loader;
        loader.setFileName("/opt/Qt/5.5/gcc_64/plugins/sqldrivers/libqsqlmysql.so");
        qDebug() << "PluginLoader worked =" << loader.load();
        qDebug() << "Plugin Loader error=" << loader.errorString();
    
        QStringList driverlist =QSqlDatabase::drivers();
        qDebug() << "Databases: ";
        for (int i = 0; i < driverlist.size(); ++i)
        {
            qDebug() << driverlist.at(i);
        }
    
        if (!db_opened)
        {
                db = new QSqlDatabase();
                qDebug() << "Step 1 - Database:    is valid=" << db->isValid();
                db->addDatabase("QMYSQL3","cooptimedb");
                qDebug() << "Step 2 - Database:    is valid=" << db->isValid();
    
                db->setHostName("localhost");
                db->setDatabaseName("cooptime");
                db->setUserName("cooptime");
                db->setPassword("...");
                db->setPort(3306);
    
                qDebug() << "Database\n========\nHostname: " << db->hostName() << "\nDatabasename: " << db->databaseName() << "\nUsername: " << db->userName() << "\nPassword: " << db->password()  << "\nPort: " << db->port();
    
    
                if (! db->open())
                {
                    qDebug() << "db errorcode=" <<  db->lastError().nativeErrorCode();
                    qDebug() << "db errormessage=" << db->lastError() .text();
                }
    

    The output of the code above is:

    PluginLoader worked = true
    Plugin Loader error= "Unknown error"
    Databases: 
    "QSQLITE"
    "QMYSQL"
    "QMYSQL3"
    "QPSQL"
    "QPSQL7"
    Step 1 - Database:    is valid= false
    Step 2 - Database:    is valid= false
    Database
    ========
    Hostname:  "" 
    Databasename:  "" 
    Username:  "" 
    Password:  "" 
    Port:  -1
    db errorcode= ""
    db errormessage= "Driver not loaded Driver not loaded"
    

    So it seems, the driver still doesn't load.

    Any help would be very appreciated. Thanks in advance.

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #20

      Hi and welcome to devnet,

      Your code is wrong, you are creating an invalid QSqlDatabase object on the heap and then you call a static function on it.

      Please take a look at QSqlDatabase's detailed documentation. There's an example there on how to do the setup and connection.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      RalfSchaeferR 1 Reply Last reply
      0
      • SGaistS SGaist

        Hi and welcome to devnet,

        Your code is wrong, you are creating an invalid QSqlDatabase object on the heap and then you call a static function on it.

        Please take a look at QSqlDatabase's detailed documentation. There's an example there on how to do the setup and connection.

        RalfSchaeferR Offline
        RalfSchaeferR Offline
        RalfSchaefer
        wrote on last edited by
        #21

        @SGaist Thanks for your help!! That's it. Now all works fine for me!

        1 Reply Last reply
        0
        • fikou1335F Offline
          fikou1335F Offline
          fikou1335
          wrote on last edited by fikou1335
          #22

          Hi SGaist,

          I have a new problem with QMysql, everything worked fine since today, actually when I executede this line

              DB = QSqlDatabase::addDatabase( "QMYSQL");
          

          I have this error

          libgcc_s.so.1 must be installed for pthread_cancel to work
          

          I don't know why,

          the plugin is correctly compiled without error, and using the ldd he found the libgcc_s.so.1

          Can you help me please!

          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #23

            Hi and welcome to devnet,

            Which architecture are on ?

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            0
            • fikou1335F Offline
              fikou1335F Offline
              fikou1335
              wrote on last edited by fikou1335
              #24

              Hi and thanks for your quick response

              I m working on Ubuntu 64bits
              i got this

              Precision-M4600:/usr/local/Trolltech/Qt-4.8.6/plugins/sqldrivers$ ldd libqsqlmysql.so 	linux-vdso.so.1 =>  (0x00007ffceb314000)
              	libmysqlclient.so.18 => /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18 (0x00007f7a884c6000)
              	libQtSql.so.4 => /usr/local/Trolltech/Qt-4.8.6/lib/libQtSql.so.4 (0x00007f7a88285000)
              	libQtCore.so.4 => /usr/local/Trolltech/Qt-4.8.6/lib/libQtCore.so.4 (0x00007f7a87d91000)
              	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f7a87a7f000)
              	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f7a87868000)
              	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7a874a3000)
              	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f7a8728a000)
              	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7a87086000)
              	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7a86e68000)
              	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f7a86b62000)
              	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f7a8695a000)
              	/lib64/ld-linux-x86-64.so.2 (0x00007f7a88c10000)
              
              

              and this

              Precision-M4600:/usr/lib/x86_64-linux-gnu$ ldd libmysqlclient.so.18
              	linux-vdso.so.1 =>  (0x00007ffe50bc0000)
              	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fe8f4940000)
              	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe8f473c000)
              	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe8f451e000)
              	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe8f4218000)
              	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe8f3e53000)
              	/lib64/ld-linux-x86-64.so.2 (0x00007fe8f5091000)
              
              

              If I comment the addBase line in my code everything works fine without connecting to the Database of course.
              when I try to list the drivers using

              QStringList driverlist =QSqlDatabase::drivers();
              

              I got this

              Databases: QSQLITE QMYSQL3 QMYSQL

              Everything works fine Monday, I checked the database, I could write on it fine,, but yesterday, it crash my application
              hope it can help!

              1 Reply Last reply
              0
              • fikou1335F Offline
                fikou1335F Offline
                fikou1335
                wrote on last edited by
                #25

                I have just created a new app with the main function and it works and connect fine to my database.

                In my code I comment all the last code that I added this week and SURPRISE it works as well.
                the problem is probably due to a third library that i started to use this week. I ll check why it cause a crach to mysql o_O

                1 Reply Last reply
                0
                • SGaistS Offline
                  SGaistS Offline
                  SGaist
                  Lifetime Qt Champion
                  wrote on last edited by
                  #26

                  What new library did you add ?

                  Interested in AI ? www.idiap.ch
                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                  1 Reply Last reply
                  0
                  • fikou1335F Offline
                    fikou1335F Offline
                    fikou1335
                    wrote on last edited by
                    #27

                    This one Dahua SDK

                    You can check by yourslef, they have a source example, PTZControl that works fine, but try to add

                          DB = QSqlDatabase::addDatabase( "QMYSQL");   
                    

                    and you should get the same error.

                    this sdk is used to control PTZ cams of Dahua brand.
                    I changed my code by creating a new app to control cameras and get the informations of position from my big application.

                    put this main instsead of it

                    #include <QtGui/QApplication>
                    #include "dialog.h"
                    #include <QTextCodec>
                    #include <QObject>
                    #include <QtSql/QSqlDatabase>
                    #include <QStringList>
                    #include <QtSql/QSqlQuery>
                    #include <QtSql/QSqlRecord>
                    #include <QVariant>
                    #include <iostream>
                    
                    
                    
                    int main(int argc, char *argv[])
                    {
                        QSqlDatabase DB;
                        cout <<endl<< "try connect MYSQL "<< endl;
                        try
                        {
                            DB = QSqlDatabase::addDatabase( "QMYSQL");
                        }
                        catch(...)
                        {
                            cout << "fatal error"<< endl;
                        }
                        cout << "add database"<< endl;
                        DB.setDatabaseName( "intrusiondetection" );
                        DB.setUserName( "root" );
                    
                        DB.setPassword( "root" );
                        cout << "1"<< endl;
                    
                        DB.setHostName( "" );
                    
                        cout << "try to connect"<< endl;
                        if (DB.open())
                        {
                            cout << "QMYSQL correctly connected "<< endl;
                        }
                        else
                        {
                            cout << "QMYSQL not connected "<< endl;
                        }
                    
                    
                        QApplication a(argc, argv);
                        QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
                        Dialog w;
                        w.show();
                    
                        return a.exec();
                    }
                    
                    

                    tell me if you got the same error.?

                    1 Reply Last reply
                    0
                    • SGaistS Offline
                      SGaistS Offline
                      SGaist
                      Lifetime Qt Champion
                      wrote on last edited by
                      #28

                      One thing that you should first correct: move the database initialization code after the QApplication object creation.

                      Interested in AI ? www.idiap.ch
                      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                      1 Reply Last reply
                      0
                      • fikou1335F Offline
                        fikou1335F Offline
                        fikou1335
                        wrote on last edited by
                        #29

                        i already tried every configuration but doesn't work! just a question by the way:
                        Is the QDbus available on the Ubuntu system since they said it is Unix only library..? I try to communicate between PTZcontrol process and my application

                        1 Reply Last reply
                        0
                        • SGaistS Offline
                          SGaistS Offline
                          SGaist
                          Lifetime Qt Champion
                          wrote on last edited by
                          #30

                          Ubuntu is a unix based OS since it's based on the Debian distribution. QDBus is available on Linux, OS X and Windows (the two later requires that you install dbus by hand)

                          Interested in AI ? www.idiap.ch
                          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                          1 Reply Last reply
                          0
                          • H Offline
                            H Offline
                            Hervinsen
                            wrote on last edited by
                            #31

                            Thanks to your guide, it is working on Kubuntu 16 with Qt 5.8
                            here is my output :

                            • /opt/Qt5.8.0/5.8/gcc_64/plugins/sqldrivers$ ldd libqsqlmysql.so
                              linux-vdso.so.1 => (0x00007ffcf0bf4000)
                              libQt5Sql.so.5 => /opt/Qt5.8.0/5.8/gcc_64/plugins/sqldrivers/./../../lib/libQt5Sql.so.5 (0x00007f28a7452000)
                              libQt5Core.so.5 => /opt/Qt5.8.0/5.8/gcc_64/plugins/sqldrivers/./../../lib/libQt5Core.so.5 (0x00007f28a6d32000)
                              libmysqlclient.so.20 => /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20 (0x00007f28a66fa000)
                              libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f28a6372000)
                              libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f28a5fa2000)
                              libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f28a5d82000)
                              libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f28a5a72000)
                              libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f28a585a000)
                              libicui18n.so.56 => /opt/Qt5.8.0/5.8/gcc_64/plugins/sqldrivers/./../../lib/libicui18n.so.56 (0x00007f28a53ba000)
                              libicuuc.so.56 => /opt/Qt5.8.0/5.8/gcc_64/plugins/sqldrivers/./../../lib/libicuuc.so.56 (0x00007f28a5002000)
                              libicudata.so.56 => /opt/Qt5.8.0/5.8/gcc_64/plugins/sqldrivers/./../../lib/libicudata.so.56 (0x00007f28a361a000)
                              libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f28a3412000)
                              librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f28a320a000)
                              libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f28a2fea000)
                              libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007f28a2de2000)
                              libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f28a2aca000)
                              /lib64/ld-linux-x86-64.so.2 (0x0000560448d0b000)
                              libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f28a285a000)
                            1 Reply Last reply
                            0
                            • A Offline
                              A Offline
                              Amit Talbot
                              wrote on last edited by
                              #32

                              im using qt 5.9 on mac this piece of code worked like charm for me

                              brew install mysql-connector-c
                              
                              1 Reply Last reply
                              0

                              • Login

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