Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. Qt ~ QMYSQL Driver su Windows
Forum Updated to NodeBB v4.3 + New Features

Qt ~ QMYSQL Driver su Windows

Scheduled Pinned Locked Moved Italian
15 Posts 2 Posters 6.1k Views 1 Watching
  • 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
    maxx1985
    wrote on last edited by
    #1

    Buonasera, dopo una giornata intera a cercare di connettermi ad un semplice MySql server in locale sono abbastanza affranto. Mi sono accostato a qt per necessità universitarie, risparmiandovi tutta la trafila di OpenCV di cui non sono venuto per nulla a capo, ho deciso di partire da qualcosa di semplice, mi collego a un db in locale e stampo un paio di record. Sarà facile, ed invece no, perchè scopro che i driver per il db MySql, i piu usati al mondo non ci sono e vanno scaricati\installati\compilati?

    Ok, mi rimbocco le maniche.

    Ho installato Visual Studio 2010 Ultimate x86 scaricato da dreamspark con account studente
    Ho QT 5.1.1 x86 (non openGL) e relativo QtCreator
    Gli esempi compilano bene, quindi magari va bene.

    Seguo la guida ''ufficiale'' da http://qt-project.org/doc/qt-4.8/sql-driver.html#how-to-build-the-mysql-driver-for-mingw-users

    How to Build the QMYSQL Plugin on Windows ecc...

    il codice che inserisco nella console qt è
    C:\Qt\Qt5.1.1\5.1.1\Src\qtbase\src\plugins\sqldrivers\mysql>
    qmake "INCLUDEPATH+=C:\QT\MYSQL\include" "LIBS+=C:\QT\MYSQL\lib\opt\libmysql.dll" mysql.pro

    dove i path son specifici del mio pc, premo invio e non succede NULLA, e il comando 'nmake' suggerito da errore...
    Ho cercato video di youtube, ne ho trovato uno in russo e ci ho capito ben poco.
    Ho cercato in questo forum e ho trovato un post solo su mac

    insomma, non ne sono venuto a capo, mi sembra assurdo che per connettersi ad un comunissimo db mysql si debba compilare localmente le librerie. Forse sbaglio.

    Vi sarei grato se potreste spiegarmi come fare.
    Sono sincero ma non sono sicuro manco delle variabili d'ambiente che ho settato sul pc, ho messo quelle che mi sembravano corrrette.

    Grazie per la vostra attenzione. Resto a disposizione per chiarimenrti

    1 Reply Last reply
    0
    • M Offline
      M Offline
      mcosta
      wrote on last edited by
      #2

      Ciao,

      i driver di MySQL non sono precompilati perché la compilazione dipende dalla libreria che si trova installata sul sistema e, soprattutto, dal compilatore che si vuole utilizzare; inoltre ci sono anche problemi di licenze.

      In ogni caso dovresti dare maggiori informazioni circa i messaggi di errore che vedi a video.

      Ciao

      Once your problem is solved don't forget to:

      • Mark the thread as SOLVED using the Topic Tool menu
      • Vote up the answer(s) that helped you to solve the issue

      You can embed images using (http://imgur.com/) or (http://postimage.org/)

      1 Reply Last reply
      0
      • M Offline
        M Offline
        maxx1985
        wrote on last edited by
        #3

        Si certo, anche se per esempio su java il driver c'è (si lo so che c'è la jvm eccetra ma dopo2 giorni persi sono un po frustrato), comunque non è questo il problema.

        Incollo i file .pro e l'error log.

        Alla prima compilazione non trovava il mysql.h, gli ho messo il path assoluto al file
        @#include "C:\Qt\m\include\mysql.h"@

        e di botto mi ha stao tutti sti errori, forse mi manca qualche path, qualli attivi sono i seguenti:
        !http://i.imgur.com/Fhsi51W.png(Path)!

        grazie per l'attenzione

        @TARGET = qsqlmysql

        SOURCES = main.cpp
        OTHER_FILES += mysql.json
        include(../../../sql/drivers/mysql/qsql_mysql.pri)

        PLUGIN_CLASS_NAME = QMYSQLDriverPlugin

        LIBS += C:\Qt\m\lib\libmysql.lib
        INCLUDEPATH += C:\Qt\m\include

        include(../qsqldriverbase.pri)
        @

        @17:10:49: Running steps for project mysql...
        17:10:49: Configuration unchanged, skipping qmake step.
        17:10:49: Starting: "C:\Qt\Qt5.1.1\Tools\QtCreator\bin\jom.exe"
        C:\Qt\Qt5.1.1\Tools\QtCreator\bin\jom.exe -f Makefile.Debug all
        cl -c -nologo -Zm200 -Zc:wchar_t -Zi -MDd -GR -W3 -w34100 -w34189 -DUNICODE -DWIN32 -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_NO_EXCEPTIONS -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtSql" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtSql\5.1.1" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtSql\5.1.1\QtSql" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtCore" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtCore\5.1.1" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtCore\5.1.1\QtCore" -I".moc\debug_shared" -I"........\mkspecs\win32-msvc2010" -Fo.obj\debug_shared\ @C:\Users\CENTRA~1\AppData\Local\Temp\main.obj.8032.16.jom
        main.cpp
        cl -c -nologo -Zm200 -Zc:wchar_t -Zi -MDd -GR -W3 -w34100 -w34189 -DUNICODE -DWIN32 -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_NO_EXCEPTIONS -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtSql" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtSql\5.1.1" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtSql\5.1.1\QtSql" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtCore" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtCore\5.1.1" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtCore\5.1.1\QtCore" -I".moc\debug_shared" -I"........\mkspecs\win32-msvc2010" -Fo.obj\debug_shared\ @C:\Users\CENTRA~1\AppData\Local\Temp\moc_qsql_mysql_p.obj.8032.16.jom
        moc_qsql_mysql_p.cpp
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ws2def.h(91) : warning C4005: 'AF_IPX': ridefinizione macro
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock.h(460): vedere la precedente definizione di 'AF_IPX'
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ws2def.h(131) : warning C4005: 'AF_MAX': ridefinizione macro
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock.h(479): vedere la precedente definizione di 'AF_MAX'
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ws2def.h(168) : warning C4005: 'SO_DONTLINGER': ridefinizione macro
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock.h(402): vedere la precedente definizione di 'SO_DONTLINGER'
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ws2def.h(212) : error C2011: 'sockaddr': ridefinizione tipo 'struct'
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock.h(485): vedere la dichiarazione di 'sockaddr'
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ws2def.h(390) : error C2059: errore di sintassi: 'constant'
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ws2def.h(390) : error C3805: 'constant': token imprevisto. Previsto '}' o ','.
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ws2def.h(524) : warning C4005: 'IN_CLASSA': ridefinizione macro
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock.h(287): vedere la precedente definizione di 'IN_CLASSA'
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ws2def.h(530) : warning C4005: 'IN_CLASSB': ridefinizione macro
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock.h(293): vedere la precedente definizione di 'IN_CLASSB'
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ws2def.h(536) : warning C4005: 'IN_CLASSC': ridefinizione macro
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock.h(299): vedere la precedente definizione di 'IN_CLASSC'
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ws2def.h(547) : warning C4005: 'INADDR_ANY': ridefinizione macro
        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock.h(304): vedere la precedente definizione di 'INADDR_ANY'

        ecc... ecc..@

        il resto continua qui http://pastebin.com/gZDziN2n

        1 Reply Last reply
        0
        • M Offline
          M Offline
          mcosta
          wrote on last edited by
          #4

          Ciao,

          il fatto che tu abbia modificato il .pro ed i sorgenti vuol dire che qualcosa non va nel modo in cui lanci il qmake.

          Verifica che il parametro che passi a INCLUDEPATH deve essere dove si trova il file mysql.h e quello che passi a LIBS è il percorso assoluto del file libmysql.lib

          verifica il PATH dove è installato MySQL.

          Once your problem is solved don't forget to:

          • Mark the thread as SOLVED using the Topic Tool menu
          • Vote up the answer(s) that helped you to solve the issue

          You can embed images using (http://imgur.com/) or (http://postimage.org/)

          1 Reply Last reply
          0
          • M Offline
            M Offline
            maxx1985
            wrote on last edited by
            #5

            I path del file pro sono corretti, questo è poco ma sicuro.
            !http://i.imgur.com/RGgooH0.png(as)!

            cosa intendi per "PATH dove è installato MySQL." ?

            1 Reply Last reply
            0
            • M Offline
              M Offline
              mcosta
              wrote on last edited by
              #6

              [quote author="maxx1985" date="1383583457"]I path del file pro sono corretti, questo è poco ma sicuro.
              !http://i.imgur.com/RGgooH0.png(as)!

              cosa intendi per "PATH dove è installato MySQL." ?[/quote]

              Anche se i PATH sono corretti, nell'output del compilatore non vedo la direttiva che include il PATH di MySQL.

              IN ogni caso dovresti

              ripristinare il sorgente modificao e il pro alla versione originale

              rilanciare qmake con "INCLUDEPATH+=..." "LIBS+=..." corretti

              verificare output

              lanciare nmake

              Once your problem is solved don't forget to:

              • Mark the thread as SOLVED using the Topic Tool menu
              • Vote up the answer(s) that helped you to solve the issue

              You can embed images using (http://imgur.com/) or (http://postimage.org/)

              1 Reply Last reply
              0
              • M Offline
                M Offline
                maxx1985
                wrote on last edited by
                #7

                Ho ripristinato il file mysql e rimesso l'include a mysql.h

                il file pro è il seguente

                @TARGET = qsqlmysql

                SOURCES = main.cpp
                OTHER_FILES += mysql.json
                include(../../../sql/drivers/mysql/qsql_mysql.pri)

                PLUGIN_CLASS_NAME = QMYSQLDriverPlugin

                include(../qsqldriverbase.pri)
                LIBS += C:\Qt\m\lib\libmysql.lib
                INCLUDEPATH += C:\Qt\m\include
                @

                dando il make, mi dice dinuovo che manca mysql.h

                sono andato in projects > build environment
                e in include ho aggiunto C:\Qt\m\include ed in lib ho aggiunto C:\Qt\m\lib\libmysql.lib faccio make e dinuovo sotto i 188 errori.

                @21:05:17: Starting: "C:\Qt\Qt5.1.1\Tools\QtCreator\bin\jom.exe"
                C:\Qt\Qt5.1.1\Tools\QtCreator\bin\jom.exe -f Makefile.Debug all
                cl -c -nologo -Zm200 -Zc:wchar_t -Zi -MDd -GR -W3 -w34100 -w34189 -DUNICODE -DWIN32 -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_NO_EXCEPTIONS -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtSql" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtSql\5.1.1" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtSql\5.1.1\QtSql" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtCore" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtCore\5.1.1" -I"C:\Qt\Qt5.1.1\5.1.1\msvc2010\include\QtCore\5.1.1\QtCore" -I".moc\debug_shared" -I"........\mkspecs\win32-msvc2010" -Fo.obj\debug_shared\ @C:\Users\CENTRA~1\AppData\Local\Temp\main.obj.11868.16.jom
                main.cpp@

                ho già provato a reinstallare qt.
                non ho idee :(

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  mcosta
                  wrote on last edited by
                  #8

                  Scusa ma non capisco perche modifiche a mano il file PRO

                  devi passare quei parametri a linea di comando di qmake

                  Once your problem is solved don't forget to:

                  • Mark the thread as SOLVED using the Topic Tool menu
                  • Vote up the answer(s) that helped you to solve the issue

                  You can embed images using (http://imgur.com/) or (http://postimage.org/)

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    maxx1985
                    wrote on last edited by
                    #9

                    Ho seguito un tutorial che lo faceva direttamente tramite qt-creator senza andare per riga di comando

                    cosa dovrei scrivere nella console?

                    scusa la ''niubbagine'' ma sinceramente nn sono avezzo a ste cose voglio programmare, non combattere con l'ide :V

                    Se hai un tutorial dettagliato anche in inglese sarei felice di seguirlo, sul web ho trovato solo vaghe liste puntate.

                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      mcosta
                      wrote on last edited by
                      #10

                      Ciao,

                      il tutorial che ho sempre seguito io è questo
                      http://qt-project.org/doc/qt-4.8/sql-driver.html#how-to-build-the-qmysql-plugin-on-windows

                      devi lanciare il comando indicato sostituendo i PATH dell'esempio con quelli della tua piattaforma.

                      Cmq "programmare" vuol dire anche combattere con gli IDE :D

                      Once your problem is solved don't forget to:

                      • Mark the thread as SOLVED using the Topic Tool menu
                      • Vote up the answer(s) that helped you to solve the issue

                      You can embed images using (http://imgur.com/) or (http://postimage.org/)

                      1 Reply Last reply
                      0
                      • M Offline
                        M Offline
                        maxx1985
                        wrote on last edited by
                        #11

                        Con i miei colleghi d'università abbiamo correttamente compilato opencv, ma per mysql nulla!

                        Abbiamo pazientemente aggiunto tutti gli include mancanti e le variabili d'ambiente,
                        RC.EXE
                        CL.ECE

                        Poi i path del file stddef,h, poi winver.h poi qualcos'altro poi windows.h
                        adesso in pratica se compilo dalla console di Qt compare questo
                        !http://i.imgur.com/5zxTtf8.png(qt)!

                        nella console di visual studio questo
                        !http://i.imgur.com/qDsOMYg.png(vs)!

                        e sulla console standard di windows
                        !http://i.imgur.com/mt91tkx.png(win)!

                        i path aggiunti in compilazione sono
                        INCLUDEPATH+="C:\Qt\c\include"
                        INCLUDEPATH+="C:\Progra~2\Micros~2.0\VC\include"
                        LIBS+="C:\Qt\c\lib\libmysql.lib"
                        INCLUDEPATH+="C:\Progra~2\MIA713~1\Windows\v7.0A\Include"

                        In nomi in 8.3 son necessati altrimenti non trova i percorsi e gli errori cambiano diventando, non ho trovato stddef,h o non ho trovato winver.h

                        e così via...

                        in laboratorio abbiam provato su altri pc usati per sviluppo con vs e stessi problemi. Non ho idee...

                        1 Reply Last reply
                        0
                        • M Offline
                          M Offline
                          mcosta
                          wrote on last edited by
                          #12

                          Ciao,

                          purtroppo io non ho VS ma con MinGW non ho docuto assolutamente modificato nulla!

                          IL tutorial è completo e funziona; prova a non usare l'IDE.
                          Usa il prompt di comandi e passa le informazioni sulla riga di comando a qmake.

                          Once your problem is solved don't forget to:

                          • Mark the thread as SOLVED using the Topic Tool menu
                          • Vote up the answer(s) that helped you to solve the issue

                          You can embed images using (http://imgur.com/) or (http://postimage.org/)

                          1 Reply Last reply
                          0
                          • M Offline
                            M Offline
                            maxx1985
                            wrote on last edited by
                            #13

                            oh, alla fine ne son venuto a capo.

                            La guida VS del sito non centra nulla, non da informazioni, da così tanto per scontato che tanto vale potevano scrivere ''buona fortuna''.

                            Credo che preparerò un video per far vedere che fare.
                            Comunque in sintesi:

                            Prima di tutto, va scaricata ed estratta questa versione di MYSQL

                            mysql-noinstall-5.1.72-win32.zip la si trova sul sito mysql, estraetelo da qualche parte

                            Assicurarsi che i path d'ambiente contengano i link a:
                            C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
                            C:\Qt\483\bin
                            C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE
                            _C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools_

                            bisogna aprire con il pannello di comando (x86) di visual studio la dir
                            C:\Qt\483\src\plugins\sqldrivers\mysql
                            (controllando il vostro path e accertandosi che NON CI SIANO SPAZI NEI PERCORSI in caso ce ne siano o spostate i setup o usate i path 8.3 (PROGRA~1 per intenderci) potete trovarli facendo dir /x da dos)

                            Fatto questo lanciare i seguenti comandi nella dir appena raggiunta

                            qmake "INCLUDEPATH+=C:\Qt\mysql1\include" "LIBS+=-LC:\Qt\mysql1\lib\opt\ -llibmysql" mysql.pro

                            nmake

                            nmake release

                            prendere i file compilati sia dalla cartella debug che dalla cartella release
                            e metterli in

                            C:\Qt\483\plugins\sqldrivers

                            e allora dovrebbe andare.

                            Ho scritto un sunto di fretta, credo non sia difficile capire quali sono le BASEDIR dei vari setup.

                            Appena preparo untutorial piu completo lo posto.
                            Grazie dell'interesse

                            1 Reply Last reply
                            0
                            • M Offline
                              M Offline
                              mcosta
                              wrote on last edited by
                              #14

                              Ciao,

                              grazie per le info e complimenti per l'impegno che ci hai messo.
                              Volevo però sottolineare che i problemi che tu hai avuto dipendono da:

                              • versione di MySQL
                              • bug del prompt di Windows che da problemi con i PATH con spazi (in realtà io ODIO i path con gli spazi).

                              Entrambi i problemi NON dipendono da Qt e quindi il tutorial, che è scritto in maniera generica, non è sbagliato; ti garantisco che seguendo il tutorial con MinGW tutto OK.

                              In ogni caso "tutto è bene quel che finisce bene".

                              Enjoy Qt

                              Once your problem is solved don't forget to:

                              • Mark the thread as SOLVED using the Topic Tool menu
                              • Vote up the answer(s) that helped you to solve the issue

                              You can embed images using (http://imgur.com/) or (http://postimage.org/)

                              1 Reply Last reply
                              0
                              • M Offline
                                M Offline
                                maxx1985
                                wrote on last edited by
                                #15

                                Mi son preso la briga di riscrivere la guida con maggiore dovizia di dettagli ed in inglese nella sezione trubleshooting del sito, spero di aiutare anche gli altri a risolvere questo antipatico problema.
                                Ecco il link http://qt-project.org/forums/viewthread/34967/

                                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