Qt połączenie z bazą MySql

0

Cześć,
do tej pory w swoich aplikacjach używałem bazy Sqlite. Chciałem jednak trochę poeksperymentować z MySql-em, jednak mam problem z połączeniem.
Łącze się w ten sposób:
QSqlDatabase mydb = QSqlDatabase::addDatabase("QMYSQL");
mydb.setHostName("localhost");
mydb.setDatabaseName("bazaTest");
mydb.setUserName("root");
mydb.setPassword("root");

i dostaję taki błąd:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7

Używam wersji Qt 5.5.1 na Ubuntu

0

Takie same problemy miałem jeszcze w wersji 4.6, tyle czasu i cały czas te same problemy. Prawie na pewno brakująca binarka/plugin w drajwerze albo brak samego drajwera. Użyj ldd najpierw na swojej wybudowanej binarce i znajdź coś w stylu ...mysql.so. Jeżeli znajduje Ci takie .so to wywołaj na nim ldd i zobacz czy tej binarce czegoś nie brakuje.

0

Czy wgrałeś sterownik QMYSQL?

0

ldd /home/d1/Qt/5.5/gcc_64/plugins/sqldrivers/libqsqlmysql.so
linux-vdso.so.1 => (0x00007fff2d9bc000)
libmysqlclient_r.so.16 => not found
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f6cbd271000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f6cbd038000)
libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007f6cbce1e000)
libssl.so.10 => not found
libcrypto.so.10 => not found
libQt5Sql.so.5 => /home/d1/Qt/5.5/gcc_64/plugins/sqldrivers/../../lib/libQt5Sql.so.5 (0x00007f6cbcbde000)
libQt5Core.so.5 => /home/d1/Qt/5.5/gcc_64/plugins/sqldrivers/../../lib/libQt5Core.so.5 (0x00007f6cbc498000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f6cbc27a000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f6cbbf76000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f6cbbc70000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f6cbba5a000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6cbb695000)
libicui18n.so.54 => /home/d1/Qt/5.5/gcc_64/plugins/sqldrivers/../../lib/libicui18n.so.54 (0x00007f6cbb227000)
libicuuc.so.54 => /home/d1/Qt/5.5/gcc_64/plugins/sqldrivers/../../lib/libicuuc.so.54 (0x00007f6cbae79000)
libicudata.so.54 => /home/d1/Qt/5.5/gcc_64/plugins/sqldrivers/../../lib/libicudata.so.54 (0x00007f6cb944f000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f6cb924b000)
libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007f6cb9049000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f6cb8e41000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f6cb8b39000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6cbd69c000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f6cb88fb000)

google podpowiada że powinienem wykonać: libmysqlclient16-dev
ale dostaję błąd: E: Nie udało się odnaleźć pakietu libmysqlclient16-dev

0

libmysqlclient_r.so.16 => not found

To jest Twój główny problem. Podejrzewam, że nie zbudowałeś pluginu do mysqla tak jak trzeba, albo nie zbudowałeś go wcale ;)

0

ale sqlite też nie budowałem a działa :)
jakaś podpowiedź co należy zrobić?

0

SQLite jeszcze za czasów 4.6 był wbudowany w standardzie, reszte pluginów trzeba było sobie samemu wybudować ;) Jeśli w wersji 5.5 istnieje jeszcze Qt Assistant to prawie na pewno będzie tam instrukcja. Chociaż pamiętam, że na kubuntu jak chciałem postgresa wystarczyło że dodałem sobie paczkę synapticem. Sprawdź w swoim menedżerze jakie masz dostępne paczki.

0

sudo apt-get install libmysqlclient-dev
Czytanie list pakietów... Gotowe
Budowanie drzewa zależności
Odczyt informacji o stanie... Gotowe
libmysqlclient-dev jest już w najnowszej wersji.
0 aktualizowanych, 0 nowo instalowanych, 0 usuwanych i 141 nieaktualizowanych.

synaptica jeszcze nie używałem ale chyba najwyższa pora się z nim zapoznać

1 użytkowników online, w tym zalogowanych: 0, gości: 1