Unable to use QMYSQL driver on arch linux
-
Hello, I am new to QT and I am trying to use connect to a sql database, I am using QT 6.4.3. My code works well on windows (after moving dlls) but I get the following message on my arch linux system:
QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QODBC QPSQL QMARIADB QMYSQL QSQLITE QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins Error al conectar QWidget: Must construct a QApplication before a QWidget
I tried following this but said commands do nothing. I also run
configure -sql-mysql
and it also didn't work.My
libmysqlclient.so
is located at /usr/libFile structore for
Qt/6.4.3/Src/qtbase/src/plugins/sqldrivers
├── CMakeFiles ├── cmake_install.cmake ├── CMakeLists.txt ├── configure.cmake ├── CTestTestfile.cmake ├── db2 │ ├── CMakeLists.txt │ ├── db2.json │ ├── main.cpp │ ├── qsql_db2.cpp │ ├── qsql_db2_p.h │ └── README ├── ibase │ ├── CMakeLists.txt │ ├── ibase.json │ ├── main.cpp │ ├── qsql_ibase.cpp │ └── qsql_ibase_p.h ├── mysql │ ├── CMakeFiles │ │ ├── Export │ │ │ └── 6daf95e385d7cc8ad37a0af677fcce5d │ │ │ ├── Qt6QMYSQLDriverPluginTargets.cmake │ │ │ └── Qt6QMYSQLDriverPluginTargets-release.cmake │ │ ├── QMYSQLDriverPlugin_autogen.dir │ │ │ └── AutogenInfo.json │ │ └── QMYSQLDriverPlugin.dir │ │ └── QMYSQLDriverPlugin_autogen │ ├── cmake_install.cmake │ ├── CMakeLists.txt │ ├── CTestTestfile.cmake │ ├── main.cpp │ ├── mysql.json │ ├── QMYSQLDriverPlugin.version.in │ ├── qsql_mysql.cpp │ ├── qsql_mysql_p.h │ └── README ├── oci │ ├── CMakeLists.txt │ ├── main.cpp │ ├── oci.json │ ├── qsql_oci.cpp │ ├── qsql_oci_p.h │ └── README ├── odbc │ ├── CMakeLists.txt │ ├── main.cpp │ ├── odbc.json │ ├── qsql_odbc.cpp │ ├── qsql_odbc_p.h │ └── README ├── psql │ ├── CMakeLists.txt │ ├── main.cpp │ ├── psql.json │ ├── qsql_psql.cpp │ ├── qsql_psql_p.h │ └── README ├── qt_cmdline.cmake ├── qtsqldrivers-config.h ├── qtsqldrivers-config_p.h ├── README └── sqlite ├── CMakeFiles │ ├── Export │ │ └── 6daf95e385d7cc8ad37a0af677fcce5d │ │ ├── Qt6QSQLiteDriverPluginTargets.cmake │ │ └── Qt6QSQLiteDriverPluginTargets-release.cmake │ ├── QSQLiteDriverPlugin_autogen.dir │ │ └── AutogenInfo.json │ └── QSQLiteDriverPlugin.dir │ ├── __ │ │ └── __ │ │ └── __ │ │ └── 3rdparty │ │ └── sqlite │ └── QSQLiteDriverPlugin_autogen ├── cmake_install.cmake ├── CMakeLists.txt ├── CTestTestfile.cmake ├── QSQLiteDriverPlugin.version.in ├── qsql_sqlite.cpp ├── qsql_sqlite_p.h ├── README ├── smain.cpp └── sqlite.json
-
Hello, I am new to QT and I am trying to use connect to a sql database, I am using QT 6.4.3. My code works well on windows (after moving dlls) but I get the following message on my arch linux system:
QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QODBC QPSQL QMARIADB QMYSQL QSQLITE QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins Error al conectar QWidget: Must construct a QApplication before a QWidget
I tried following this but said commands do nothing. I also run
configure -sql-mysql
and it also didn't work.My
libmysqlclient.so
is located at /usr/libFile structore for
Qt/6.4.3/Src/qtbase/src/plugins/sqldrivers
├── CMakeFiles ├── cmake_install.cmake ├── CMakeLists.txt ├── configure.cmake ├── CTestTestfile.cmake ├── db2 │ ├── CMakeLists.txt │ ├── db2.json │ ├── main.cpp │ ├── qsql_db2.cpp │ ├── qsql_db2_p.h │ └── README ├── ibase │ ├── CMakeLists.txt │ ├── ibase.json │ ├── main.cpp │ ├── qsql_ibase.cpp │ └── qsql_ibase_p.h ├── mysql │ ├── CMakeFiles │ │ ├── Export │ │ │ └── 6daf95e385d7cc8ad37a0af677fcce5d │ │ │ ├── Qt6QMYSQLDriverPluginTargets.cmake │ │ │ └── Qt6QMYSQLDriverPluginTargets-release.cmake │ │ ├── QMYSQLDriverPlugin_autogen.dir │ │ │ └── AutogenInfo.json │ │ └── QMYSQLDriverPlugin.dir │ │ └── QMYSQLDriverPlugin_autogen │ ├── cmake_install.cmake │ ├── CMakeLists.txt │ ├── CTestTestfile.cmake │ ├── main.cpp │ ├── mysql.json │ ├── QMYSQLDriverPlugin.version.in │ ├── qsql_mysql.cpp │ ├── qsql_mysql_p.h │ └── README ├── oci │ ├── CMakeLists.txt │ ├── main.cpp │ ├── oci.json │ ├── qsql_oci.cpp │ ├── qsql_oci_p.h │ └── README ├── odbc │ ├── CMakeLists.txt │ ├── main.cpp │ ├── odbc.json │ ├── qsql_odbc.cpp │ ├── qsql_odbc_p.h │ └── README ├── psql │ ├── CMakeLists.txt │ ├── main.cpp │ ├── psql.json │ ├── qsql_psql.cpp │ ├── qsql_psql_p.h │ └── README ├── qt_cmdline.cmake ├── qtsqldrivers-config.h ├── qtsqldrivers-config_p.h ├── README └── sqlite ├── CMakeFiles │ ├── Export │ │ └── 6daf95e385d7cc8ad37a0af677fcce5d │ │ ├── Qt6QSQLiteDriverPluginTargets.cmake │ │ └── Qt6QSQLiteDriverPluginTargets-release.cmake │ ├── QSQLiteDriverPlugin_autogen.dir │ │ └── AutogenInfo.json │ └── QSQLiteDriverPlugin.dir │ ├── __ │ │ └── __ │ │ └── __ │ │ └── 3rdparty │ │ └── sqlite │ └── QSQLiteDriverPlugin_autogen ├── cmake_install.cmake ├── CMakeLists.txt ├── CTestTestfile.cmake ├── QSQLiteDriverPlugin.version.in ├── qsql_sqlite.cpp ├── qsql_sqlite_p.h ├── README ├── smain.cpp └── sqlite.json
As laways when debugging plugins make sure to run your app with QT_DEBUG_PLUGINS to see why the loading of the plugin fails.
-
As laways when debugging plugins make sure to run your app with QT_DEBUG_PLUGINS to see why the loading of the plugin fails.
@Christian-Ehrlicher said in Unable to use QMYSQL driver on arch linux:
QT_DEBUG_PLUGINS
Thanks for the reply, this is what I got:
qt.core.plugin.factoryloader: checking directory path "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers" ... qt.core.plugin.factoryloader: looking at "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlodbc.so" qt.core.plugin.loader: Found metadata in lib /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlodbc.so, metadata= { "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface", "MetaData": { "Keys": [ "QODBC" ] }, "archlevel": 1, "className": "QODBCDriverPlugin", "debug": false, "version": 394240 } qt.core.plugin.factoryloader: Got keys from plugin meta data QList("QODBC") qt.core.plugin.factoryloader: looking at "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlpsql.so" qt.core.plugin.loader: Found metadata in lib /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlpsql.so, metadata= { "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface", "MetaData": { "Keys": [ "QPSQL" ] }, "archlevel": 1, "className": "QPSQLDriverPlugin", "debug": false, "version": 394240 } qt.core.plugin.factoryloader: Got keys from plugin meta data QList("QPSQL") qt.core.plugin.factoryloader: looking at "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so" qt.core.plugin.loader: Found metadata in lib /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so, metadata= { "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface", "MetaData": { "Keys": [ "QMYSQL", "QMARIADB" ] }, "archlevel": 1, "className": "QMYSQLDriverPlugin", "debug": false, "version": 394240 } qt.core.plugin.factoryloader: Got keys from plugin meta data QList("QMYSQL", "QMARIADB") qt.core.plugin.factoryloader: looking at "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlite.so" qt.core.plugin.loader: Found metadata in lib /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlite.so, metadata= { "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface", "MetaData": { "Keys": [ "QSQLITE" ] }, "archlevel": 1, "className": "QSQLiteDriverPlugin", "debug": false, "version": 394240 } qt.core.plugin.factoryloader: Got keys from plugin meta data QList("QSQLITE") qt.core.library: "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so" cannot load: Cannot load library /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so: (libmysqlclient.so.21: cannot open shared object file: No such file or directory) qt.core.plugin.loader: QLibraryPrivate::loadPlugin failed on "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so" : "Cannot load library /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so: (libmysqlclient.so.21: cannot open shared object file: No such file or directory)" QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QODBC QPSQL QMARIADB QMYSQL QSQLITE QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins Error al conectar QWidget: Must construct a QApplication before a QWidget
-
@Christian-Ehrlicher said in Unable to use QMYSQL driver on arch linux:
QT_DEBUG_PLUGINS
Thanks for the reply, this is what I got:
qt.core.plugin.factoryloader: checking directory path "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers" ... qt.core.plugin.factoryloader: looking at "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlodbc.so" qt.core.plugin.loader: Found metadata in lib /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlodbc.so, metadata= { "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface", "MetaData": { "Keys": [ "QODBC" ] }, "archlevel": 1, "className": "QODBCDriverPlugin", "debug": false, "version": 394240 } qt.core.plugin.factoryloader: Got keys from plugin meta data QList("QODBC") qt.core.plugin.factoryloader: looking at "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlpsql.so" qt.core.plugin.loader: Found metadata in lib /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlpsql.so, metadata= { "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface", "MetaData": { "Keys": [ "QPSQL" ] }, "archlevel": 1, "className": "QPSQLDriverPlugin", "debug": false, "version": 394240 } qt.core.plugin.factoryloader: Got keys from plugin meta data QList("QPSQL") qt.core.plugin.factoryloader: looking at "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so" qt.core.plugin.loader: Found metadata in lib /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so, metadata= { "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface", "MetaData": { "Keys": [ "QMYSQL", "QMARIADB" ] }, "archlevel": 1, "className": "QMYSQLDriverPlugin", "debug": false, "version": 394240 } qt.core.plugin.factoryloader: Got keys from plugin meta data QList("QMYSQL", "QMARIADB") qt.core.plugin.factoryloader: looking at "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlite.so" qt.core.plugin.loader: Found metadata in lib /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlite.so, metadata= { "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface", "MetaData": { "Keys": [ "QSQLITE" ] }, "archlevel": 1, "className": "QSQLiteDriverPlugin", "debug": false, "version": 394240 } qt.core.plugin.factoryloader: Got keys from plugin meta data QList("QSQLITE") qt.core.library: "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so" cannot load: Cannot load library /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so: (libmysqlclient.so.21: cannot open shared object file: No such file or directory) qt.core.plugin.loader: QLibraryPrivate::loadPlugin failed on "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so" : "Cannot load library /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so: (libmysqlclient.so.21: cannot open shared object file: No such file or directory)" QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QODBC QPSQL QMARIADB QMYSQL QSQLITE QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins Error al conectar QWidget: Must construct a QApplication before a QWidget
@AgustinOrdonez said in Unable to use QMYSQL driver on arch linux:
qt.core.library: "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so" cannot load: Cannot load library /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so: (libmysqlclient.so.21: cannot open shared object file: No such file or directory)
qt.core.plugin.loader: QLibraryPrivate::loadPlugin failed on "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so" : "Cannot load library /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so: (libmysqlclient.so.21: cannot open shared object file: No such file or directory)"As you can see libmysqlclient.so.21 is missing
-
@Christian-Ehrlicher said in Unable to use QMYSQL driver on arch linux:
QT_DEBUG_PLUGINS
Thanks for the reply, this is what I got:
qt.core.plugin.factoryloader: checking directory path "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers" ... qt.core.plugin.factoryloader: looking at "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlodbc.so" qt.core.plugin.loader: Found metadata in lib /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlodbc.so, metadata= { "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface", "MetaData": { "Keys": [ "QODBC" ] }, "archlevel": 1, "className": "QODBCDriverPlugin", "debug": false, "version": 394240 } qt.core.plugin.factoryloader: Got keys from plugin meta data QList("QODBC") qt.core.plugin.factoryloader: looking at "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlpsql.so" qt.core.plugin.loader: Found metadata in lib /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlpsql.so, metadata= { "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface", "MetaData": { "Keys": [ "QPSQL" ] }, "archlevel": 1, "className": "QPSQLDriverPlugin", "debug": false, "version": 394240 } qt.core.plugin.factoryloader: Got keys from plugin meta data QList("QPSQL") qt.core.plugin.factoryloader: looking at "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so" qt.core.plugin.loader: Found metadata in lib /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so, metadata= { "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface", "MetaData": { "Keys": [ "QMYSQL", "QMARIADB" ] }, "archlevel": 1, "className": "QMYSQLDriverPlugin", "debug": false, "version": 394240 } qt.core.plugin.factoryloader: Got keys from plugin meta data QList("QMYSQL", "QMARIADB") qt.core.plugin.factoryloader: looking at "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlite.so" qt.core.plugin.loader: Found metadata in lib /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlite.so, metadata= { "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface", "MetaData": { "Keys": [ "QSQLITE" ] }, "archlevel": 1, "className": "QSQLiteDriverPlugin", "debug": false, "version": 394240 } qt.core.plugin.factoryloader: Got keys from plugin meta data QList("QSQLITE") qt.core.library: "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so" cannot load: Cannot load library /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so: (libmysqlclient.so.21: cannot open shared object file: No such file or directory) qt.core.plugin.loader: QLibraryPrivate::loadPlugin failed on "/home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so" : "Cannot load library /home/dioswilson1/Qt/6.4.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so: (libmysqlclient.so.21: cannot open shared object file: No such file or directory)" QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QODBC QPSQL QMARIADB QMYSQL QSQLITE QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins Error al conectar QWidget: Must construct a QApplication before a QWidget
@AgustinOrdonez said in Unable to use QMYSQL driver on arch linux:
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
This also looks like there is something else missing in your program. Have you created and initialised a QCoreApplication (or QApplication) in your application before attempting any database operations?