QMYSQL driver not loaded
-
wrote on 10 Dec 2016, 16:18 last edited by
Sto cergando di realizzare un progetto (Qt5.7 su Debian) che mi consenta di collegarmi ad un database MySQL. Quindi ho provveduto a seguire tutti i passi per avere il driver MySQL "funzionante" e alla fine sono riuscito a compilarlo dai sorgenti.
Ciò nonostante quando cerco di eseguire l'esempio (o qualsiasi mio progetto anche più semplice) continuo a ricevere l'errore:
QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 QSqlError("", "Driver not loaded", "Driver not loaded") Failed to connect. Press <RETURN> to close this window...
Il file di progetto sqlbrowser.pro è così configurato (default):
TEMPLATE = app TARGET = sqlbrowser QT += sql widgets HEADERS = browser.h connectionwidget.h qsqlconnectiondialog.h SOURCES = main.cpp browser.cpp connectionwidget.cpp qsqlconnectiondialog.cpp FORMS = browserwidget.ui qsqlconnectiondialog.ui build_all:!build_pass { CONFIG -= build_all CONFIG += release } # install target.path = $$[QT_INSTALL_EXAMPLES]/sql/sqlbrowser INSTALLS += target wince { DEPLOYMENT_PLUGIN += qsqlite }
Da quello che ho letto nei forum dovrebbe essere ok!
Ciò nonostante non riesco a capire come mai non "carica" il driver... se è perchè non lo trova o cos'altro. C'è qualche verifica che posso fare? Mi sto dimenticando di qualche cosa? ...magari nella configurazione del progetto!Ho provato anche creare una seconda macchina virtuale per fare un'in'installazione pulita ma arrivo sempre allo stesso punto. Con una ubuntu 16.04, mi blocco alla compilazione del driver dai sorgenti... e ho abbandonato l'esperimento.
Grazie a chiunque riesca a darmi un input per superare questo rognoso ostacolo!
-
Sto cergando di realizzare un progetto (Qt5.7 su Debian) che mi consenta di collegarmi ad un database MySQL. Quindi ho provveduto a seguire tutti i passi per avere il driver MySQL "funzionante" e alla fine sono riuscito a compilarlo dai sorgenti.
Ciò nonostante quando cerco di eseguire l'esempio (o qualsiasi mio progetto anche più semplice) continuo a ricevere l'errore:
QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 QSqlError("", "Driver not loaded", "Driver not loaded") Failed to connect. Press <RETURN> to close this window...
Il file di progetto sqlbrowser.pro è così configurato (default):
TEMPLATE = app TARGET = sqlbrowser QT += sql widgets HEADERS = browser.h connectionwidget.h qsqlconnectiondialog.h SOURCES = main.cpp browser.cpp connectionwidget.cpp qsqlconnectiondialog.cpp FORMS = browserwidget.ui qsqlconnectiondialog.ui build_all:!build_pass { CONFIG -= build_all CONFIG += release } # install target.path = $$[QT_INSTALL_EXAMPLES]/sql/sqlbrowser INSTALLS += target wince { DEPLOYMENT_PLUGIN += qsqlite }
Da quello che ho letto nei forum dovrebbe essere ok!
Ciò nonostante non riesco a capire come mai non "carica" il driver... se è perchè non lo trova o cos'altro. C'è qualche verifica che posso fare? Mi sto dimenticando di qualche cosa? ...magari nella configurazione del progetto!Ho provato anche creare una seconda macchina virtuale per fare un'in'installazione pulita ma arrivo sempre allo stesso punto. Con una ubuntu 16.04, mi blocco alla compilazione del driver dai sorgenti... e ho abbandonato l'esperimento.
Grazie a chiunque riesca a darmi un input per superare questo rognoso ostacolo!
wrote on 10 Dec 2016, 21:37 last edited by@morky76
Ho scoperto il problema, ma non ho capito perchè!In pratica, l'unica "variante" rispetto all'installazione standard è che avevo cambiato il percorso dei progetti!!! Ripristinato il percorso originario dei progetti di QT creator... puf ...tutto ha iniziato a funzionare! Ma perchè? Qual'è il criterio/parametro attraverso il quale Qt carica il driver?
-
wrote on 12 Dec 2016, 07:49 last edited by
-
wrote on 6 Apr 2020, 11:55 last edited by
Anche se è un post molto vecchio, voglio comunque lasciare la mia esperienza qui, dato che mi sono imbattuto in questo problema recentemente e dopo vari tentativi ho trovato la soluzione che almeno per me ha funzionato. Ve la lascio qui.
RISOLVERE SQL library not load su QT per MAC (dovrebbe valere anche per windows)
Aggiungi la variabile QT_DEBUG_PLUGINS tra le variabili nel run environment (lo trovi aprendo un progetto, cliccando su projects a dx, poi su run e scendendo trovi il run environment) e settala a 1.
Rilancia il programma.
Il debug adesso darà in output una cosa del genere:QFactoryLoader::QFactoryLoader() checking directory path "/Users/Albo/Documents/progetto_malnati/server/build-server-Desktop_Qt_5_12_3_clang_64bit-Debug/KlapKlap_Server.app/Contents/MacOS/sqldrivers" ...
Cannot load library /Users/Albo/Qt/5.12.3/clang_64/plugins/sqldrivers/libqsqlmysql.dylib: (dlopen(/Users/Albo/Qt/5.12.3/clang_64/plugins/sqldrivers/libqsqlmysql.dylib, 133): Library not loaded: /opt/local/lib/mysql57/mysql/libmysqlclient.20.dylib
Referenced from: /Users/Albo/Qt/5.12.3/clang_64/plugins/sqldrivers/libqsqlmysql.dylib
Reason: image not found)
QLibraryPrivate::loadPlugin failed on "/Users/Albo/Qt/5.12.3/clang_64/plugins/sqldrivers/libqsqlmysql.dylib" : "Cannot load library /Users/Albo/Qt/5.12.3/clang_64/plugins/sqldrivers/libqsqlmysql.dylib: (dlopen(/Users/Albo/Qt/5.12.3/clang_64/plugins/sqldrivers/libqsqlmysql.dylib, 133): Library not loaded: /opt/local/lib/mysql57/mysql/libmysqlclient.20.dylib\n Referenced from: /Users/Albo/Qt/5.12.3/clang_64/plugins/sqldrivers/libqsqlmysql.dylib\n Reason: image not found)"Ora bisogna trovare i tre path che saranno gli argomenti del comando install_name_tool -change che daremo da terminale
Il primo elemento è il path scritto nel debug dopo la scritta Library not loaded:
Il secondo elemento è il path del file piu grande (le dimensioni le vedi con tasto destro ottieni informazioni) che trovi nel cercando libmysqlclient dal finder (se stai usando mac).
Il terzo elemento è il path scritto nel debug dopo la scritta Cannot load librarynel mio caso:
primo elemento: /opt/local/lib/mysql57/mysql/libmysqlclient.20.dylib
secondo elemento: /usr/local/mysql-8.0.19-macos10.15-x86_64/lib/libmysqlclient.21.dylib
terzo elemento: /Users/Albo/Qt/5.12.3/clang_64/plugins/sqldrivers/libqsqlmysql.dylibda cui:
install_name_tool -change /opt/local/lib/mysql57/mysql/libmysqlclient.20.dylib /usr/local/mysql-8.0.19-macos10.15-x86_64/lib/libmysqlclient.21.dylib /Users/Albo/Qt/5.12.3/clang_64/plugins/sqldrivers/libqsqlmysql.dylib
Ora basterà lanciare questo comando da terminale.
Se riprovate a runnare il programma dovrebbe ora caricare correttamente le librerie.