Witam,
Przedstawię od razu problem: Mam kłopot z biblioteką - właściwie jej kompilacją - mysql pod Qt i mingw32. Otóż piszę program w którym muszę połączyć się z bazą danych na serwerze. Baza danych to mysql (Jako iż wcześniej pracowałem na SQLITE to nie było problemu bo ten "jest w" Qt, no ale działa jakby lokalnie. Chyba, że istnieje sposób na umieszczenie bazy danych na serwerze i obsługa jej w SQLITE ). Nie mogę się połączyć z bazą danych bo przy próbie kompilacji i uruchomienia programu - dostaję komunikat od kompilatora:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
oraz mój komunikat z qDebug():
"ERROR LOG (mainwindow): " (OpenDataBaseUser) ==> Nie mozna połączyc sie z bazą danych
Jasne jest, że nie ma sterownika od bazy danych. Zainstalowałem sobie całe "środowisko" MySQL (pakiet dla dewelopera więc Connector.C++ 1.1 MySQL Server 5.7 itp mam w sourcach od MySQL). Muszę sobie tą dll-kę skompilować. Odpalam konsolę "Qt 5.9.2 for Desktop (MinGW 5.3.0 32 bit)" z folderu Qt.
Przechodzę sobie:
cd C:\Qt\5.9.2\Src\qtbase\src\plugins\sqldrivers\mysql
Ustalam sobie zmienne:
set con_mysql=C:\\PROGRA~1\\MySQL\\MYSQLC~1.1
set main_mysql=C:\\PROGRA~1\\MySQL\\MYSQLS~1.7
potem wklepuję w konsoli:
qmake "INCLUDEPATH+=%main_mysql%\\include" "LIBS+=%main_mysql%\\lib" mysql.pro
Tutaj otrzymuję taki komunikat:
Cannot read C:/Qt/5.9.2/Src/qtbase/src/plugins/sqldrivers/qtsqldrivers-config.pri: Nie mo?na odnale?? okre?lonego pliku.
Na początku nie chciały się utworzyć pliku makefile ale przeczytałem gdzieś na jakimś forum, że można się pozbyć tego i otrzymać pliku makefile przez edycję mysql.pro . Należy zakomentować
QMAKE_USE += mysql
Tak zrobiłem. I faktycznie otrzymuję pliku makefile. Przechodząc dalej uderzam w konsoli:
mingw32-make
i tutaj pojawia się kłopot. Projekt zdaje się kompilować, ale na końcu otrzymuję coś takiego:
C:/Qt/Tools/mingw530_32/bin/../lib/gcc/i686-w64-mingw32/5.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find C:/PROGRA~1/MySQL/MYSQLS~1.7/lib: Permission denied
collect2.exe: error: ld returned 1 exit status
Makefile.Release:67: recipe for target '../plugins/sqldrivers/qsqlmysql.dll' failed
mingw32-make[1]: *** [../plugins/sqldrivers/qsqlmysql.dll] Error 1
mingw32-make[1]: Leaving directory 'C:/Qt/5.9.2/Src/qtbase/src/plugins/sqldrivers/mysql'
Makefile:40: recipe for target 'release-all' failed
mingw32-make: *** [release-all] Error 2
Przeglądałem jakieś wątki na ten temat i zdaje mi się, że próbowałem już sporo rzeczy. Ale zapewne gdzieś robię błąd. Zmieniłem również konstrukcję polecenia qmake na:
qmake "INCLUDEPATH+=%con_mysql%\\include" "LIBS+=%main_mysql%\\lib" mysql.pro
Ale również to samo. Zauważyłem jednak, że przy podobnych problemach w internecie ludzie nie mieli albo nie widziałem tego komunikatu:
C:/Qt/Tools/mingw530_32/bin/../lib/gcc/i686-w64-mingw32/5.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find C:/PROGRA~1/MySQL/MYSQLS~1.7/lib: Permission denied
Być może ten brak uprawnień czy też zabroniony dostęp jest powodem tego wszystkiego. Jednakże wchodząc w ustawienia uprawnień w windows wszystko jest na miejscu. Dałem dla aplikacji również pełną kontrolę. Odpalam konsolę również jako administrator. Patrząc przez "ls -l" w konsoli również katalogi i wszystkie podkatalogi mają pełne uprawnienia - łącznie z bitem wykonania.
Ściągnąłem sobie źródła qtbase z wersji 5.7 (obecnie używam 5.9.2) bo gdzieś przeczytałem, że z tej wersji da się to skompilować ale dalej mam ten sam problem. Spodziewałem się problemu przy samym łączeniu się z bazą, ale tutaj jest problem z sterownikiem do bazy danych.
Proszę o pomoc ale oczywiście nie chodzi mi o zrobienie czegoś za mnie. Chociaż podpowiedź czy określenie dobrej drogi postępowania - szanuję czas wszystkich. Gdzieś pewnie robię głupi błąd. Ze względu na różne próby to się troszkę w tym pogubiłem.
Z góry dziękuję i pozdrawiam
PS. Mam nadzieję, że to dobry dział - jeśli nie, to przepraszam i proszę o przeniesienie do poprawnego działu.