QSqlDatabase: QMYSQL driver not loaded / Build MySQL Plugin
-
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!
-
Hi and welcome to devnet,
Which architecture are on ?
-
Hi and thanks for your quick response
I m working on Ubuntu 64bits
i got thisPrecision-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 usingQStringList 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! -
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 -
What new library did you add ?
-
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.?
-
One thing that you should first correct: move the database initialization code after the QApplication object creation.
-
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)
-
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)
- /opt/Qt5.8.0/5.8/gcc_64/plugins/sqldrivers$ ldd libqsqlmysql.so
-
im using qt 5.9 on mac this piece of code worked like charm for me
brew install mysql-connector-c