Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. QMYSQL driver not loaded
QtWS25 Last Chance

QMYSQL driver not loaded

Scheduled Pinned Locked Moved Italian
4 Posts 3 Posters 1.8k 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.
  • M Offline
    M Offline
    morky76
    wrote on 10 Dec 2016, 16:18 last edited by
    #1

    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!

    M 1 Reply Last reply 10 Dec 2016, 21:37
    0
    • M morky76
      10 Dec 2016, 16:18

      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!

      M Offline
      M Offline
      morky76
      wrote on 10 Dec 2016, 21:37 last edited by
      #2

      @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?

      1 Reply Last reply
      0
      • V Offline
        V Offline
        VRonin
        wrote on 12 Dec 2016, 07:49 last edited by
        #3

        http://doc.qt.io/qt-5/deployment-plugins.html#the-plugin-directory

        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
        ~Napoleon Bonaparte

        On a crusade to banish setIndexWidget() from the holy land of Qt

        1 Reply Last reply
        0
        • A Offline
          A Offline
          Albos.punk95
          wrote on 6 Apr 2020, 11:55 last edited by
          #4

          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 library

          nel 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.dylib

          da 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.

          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