Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.9.1 - Qt Creator : 4.4.0 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

Problème de driver avec mysql

20 Aug modifié dans Divers et inclassable
Bonjour,
je n'arrive pas à ouvrir une base de données mysql avec le programme de test suivant:
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QDebug>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("#########");
db.setDatabaseName("#########");
db.setUserName("#########");
db.setPassword("#########");
bool ok = db.open();

qDebug() << ok;
return a.exec();
}


le problème, c'est que ceci s'affiche:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
false
la commande ldd sur le driver renvoie ceci:
snir@debian-9:~/Qt/5.9.1/gcc_64/plugins/sqldrivers$ ldd libqsqlmysql.so
linux-vdso.so.1 (0x00007ffc2a5a8000)
libQt5Sql.so.5 => /home/snir/Qt/5.9.1/gcc_64/plugins/sqldrivers/./../../lib/libQt5Sql.so.5 (0x00007fb00002a000)
libQt5Core.so.5 => /home/snir/Qt/5.9.1/gcc_64/plugins/sqldrivers/./../../lib/libQt5Core.so.5 (0x00007fafff8f0000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fafff6bf000)
libmysqlclient.so.18 => not found
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fafff33d000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fafff037000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007faffee20000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007faffea81000)
libicui18n.so.56 => /home/snir/Qt/5.9.1/gcc_64/plugins/sqldrivers/./../../lib/libicui18n.so.56 (0x00007faffe5e8000)
libicuuc.so.56 => /home/snir/Qt/5.9.1/gcc_64/plugins/sqldrivers/./../../lib/libicuuc.so.56 (0x00007faffe230000)
libicudata.so.56 => /home/snir/Qt/5.9.1/gcc_64/plugins/sqldrivers/./../../lib/libicudata.so.56 (0x00007faffc84d000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007faffc631000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007faffc42d000)
libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007faffc22b000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007faffbf17000)
/lib64/ld-linux-x86-64.so.2 (0x0000559f1f6d0000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007faffbca4000)
j'essaie donc d'installer libmysql:
root@debian-9:/usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers# apt-get install libmysqlclient-dev
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Aucune version du paquet libmysqlclient-dev n'est disponible, mais il existe dans la base
de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète
ou qu'il n'est disponible que sur une autre source

E: Le paquet « libmysqlclient-dev » n'a pas de version susceptible d'être installée
Je tourne en rond et ne sait plus trop quoi faire.

merci d'avance à ceux qui se pencheront sur mon problème

Réponses

  • Salut
    As-tu essayé d'installer libmysqlclient18 ?
  • Je dois avoir un problème avec mes dépots:
    root@debian-9:/usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers# apt-get install libmysqlclient18
    Lecture des listes de paquets... Fait
    Construction de l'arbre des dépendances
    Lecture des informations d'état... Fait
    Aucune version du paquet libmysqlclient18 n'est disponible, mais il existe dans la base
    de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète
    ou qu'il n'est disponible que sur une autre source

    E: Le paquet « libmysqlclient18 » n'a pas de version susceptible d'être installée
  • Et libmysqlclient ? Au pif car j'ai rien pur tester pendant qq jours
    Ensuite si ce n'est pas la version 18 tu devras compiler le plugin manuellement
  • apt-get install libmysqlclient
    "impossible de trouver le paquet libmysqlclient"
  • Je regarderai tout à l'heure si j'ai du réseau pour le loguer sur une debian 9
    En passant, c'est mariadb qui a remplacé mysql sur cette version il me semble
  • Alors,
    en regardant les libs installées sur une debian 9, on a dans /usr/lib
    libmariadbclient.so.18 et pas libmysqlclient18.
    Donc la procédure pour installer mysql est ici : https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/
    en prenant comme repo le deb ici : https://dev.mysql.com/downloads/repo/apt/
    Ensuite vérifier si c'est bien la version 18, sinon compiler le plugin soit même doc.qt.io/qt-5/sql-driver.html
  • 20 Aug modifié
    je ne t'ai pas encore remercié pour ton aide. Merci donc.

    C'est tout de même bizarre d'aller chercher les .deb à la main.
    Je pense que je vais laisser tomber la gestion de SQL par Qt et tout faire 'à l'ancienne" en utilisant l'API mysql.

    J'ai en effet installé le libmysql-dev sur une machine virtuelle debian 8. L'installation a abouti, mais le connecteur pour Qt ne fonctionne toujours pas.
    Ca fait déjà 2 jours que je creuse par mes propres moyens et je sens que si je persévère je suis parti pour une grosse galère alors qu'il faut que j'avance dans mon projet.

    Au final, il faut que j'implémente tout ça sur une raspberry pi, donc une debian 8 finalement. C'est ce que j'aime dans linux, ça marche à tous les coups ...
  • 20 Aug modifié
    Bonsoir,

    J'ai eu le même soucis, j'ai copié le fichier libqsqlmysql.so dans le répertoire de l'exécutable et depuis plus de soucis.
  • Merci pour ta proposition. Malheureusement, ça ne fonctionne pas.
Connectez-vous ou Inscrivez-vous pour répondre.