Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: AprendizPRG en 4 Agosto 2017, 18:20



Título: QMYSQL driver not loaded
Publicado por: AprendizPRG en 4 Agosto 2017, 18:20
hola estoy tratando de conectar qt con mysql en debian pero me arroja este error

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7


en la carpeta de driverssql de qt se encuentra instalado el libqsqlmysql.so sin embargo no reconoce el driver

tambien lo compile como dice en la doc de la pagina de qt pero persiste el error

/******************   al ejecutar este codigo me muestra el error que el driver no ha sido cargado

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel resultado("");
    if (QSqlDatabase::isDriverAvailable("QMYSQL")) {
        QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
        db.setHostName("localhost");
        db.setDatabaseName("agenda");
        db.setUserName("root");
        db.setPassword("root");
        if ( db.open() )
           resultado.setText("Bien, base de datos cargada");
        else {
             QSqlError mensaje = db.lastError();
            resultado.setText(mensaje.text());
            }

    }
    else
        resultado.setText("No hay driver");
    resultado.show();
    return app.exec();
}


/*********************** pero de esta manera aparece que el driver ha sido cargado
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel resultado("");
    if (QSqlDatabase::isDriverAvailable("QMYSQL")) {
     
           resultado.setText("Bien,driver cargado");
       

    }
    else
        resultado.setText("No hay driver");
    resultado.show();
    return app.exec();
}


Título: Re: QMYSQL driver not loaded
Publicado por: ivancea96 en 4 Agosto 2017, 18:29
¿Copiando el .so a la carpeta en la que está el programa funciona?


Título: Re: QMYSQL driver not loaded
Publicado por: AprendizPRG en 4 Agosto 2017, 18:36
gracias

pero eso ya lo intente y no funciona


Título: Re: QMYSQL driver not loaded
Publicado por: ivancea96 en 4 Agosto 2017, 18:48
Prueba algo de por aquí: http://www.qtcentre.org/threads/55365-QSqlDatabase-QMYSQL-driver-not-loaded-but-available (http://www.qtcentre.org/threads/55365-QSqlDatabase-QMYSQL-driver-not-loaded-but-available)


Título: Re: QMYSQL driver not loaded
Publicado por: AprendizPRG en 4 Agosto 2017, 19:16
 javascript:void(0); nada de nada


Título: Re: QMYSQL driver not loaded
Publicado por: AprendizPRG en 4 Agosto 2017, 23:05
hola nuevamente

hay alguna posibilidad que mysql este evitando la conexion con qt

ya que por medio del debugger de qt he probado pero el programa falla al llamar a db.open


Título: Re: QMYSQL driver not loaded
Publicado por: ivancea96 en 4 Agosto 2017, 23:15
Yo no te voy a poder seguir respondiendo, que no uso Qt. Lo mejor es que busques casos similares por google, o en los foros de Qt, o busques tutoriales sobre esto para ver qué falta.


Título: Re: QMYSQL driver not loaded
Publicado por: AprendizPRG en 4 Agosto 2017, 23:21
hola amigo

gracias de todos modos
pero llevo dias buscando por la web y no logro solucionar el problema


saludos!


Título: Re: QMYSQL driver not loaded
Publicado por: DoeJohn en 4 Agosto 2017, 23:34
Hola

Ese error es el más puñetero de Qt, ya que realmente no te da una pista e lo que está pasando.

No indicas el sistema operativo, lo que te ocurre es que tienes que copiar las .dll de mysql a una carpeta en la que Qt las encuentre.

Si estás en linux, muévete a la carpeta donde están los drivers de Qt y ejecuta el comando

ldd libqsqlmysql.so

Te dará una lista de las dependencias del driver y podrás ver lo que te falta. si estás en win no se, es copiar un par de .dll de mysql a la carpeta bin de qt  o a system de windows, pero no sé seguro ni la ubicación correcta ni los archivos que son.

Un saludo


Título: Re: QMYSQL driver not loaded
Publicado por: AprendizPRG en 5 Agosto 2017, 04:15
hola esta fue la salida

al parecer es libmysqlclient_16


 ldd libqsqlmysql.so
./libqsqlmysql.so: /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.16: version `libmysqlclient_16' not found (required by ./libqsqlmysql.so)
   linux-vdso.so.1 (0x00007ffecaff3000)
   libmysqlclient_r.so.16 => /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.16 (0x00007f90437a6000)
   libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f904358c000)
   libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f9043354000)
   libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007f904313c000)
   libssl.so.10 => not found
   libcrypto.so.10 => not found
   libQt5Sql.so.5 => /opt/Qt5.6.2/5.6/gcc_64/plugins/sqldrivers/./../../lib/libQt5Sql.so.5 (0x00007f9042ef6000)
   libQt5Core.so.5 => /opt/Qt5.6.2/5.6/gcc_64/plugins/sqldrivers/./../../lib/libQt5Core.so.5 (0x00007f90427df000)
   libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f90425c2000)
   libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f9042240000)
   libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9041f3c000)
   libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f9041d23000)
   libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9041985000)
   libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9041781000)
   libicui18n.so.56 => /opt/Qt5.6.2/5.6/gcc_64/plugins/sqldrivers/./../../lib/libicui18n.so.56 (0x00007f90412e7000)
   libicuuc.so.56 => /opt/Qt5.6.2/5.6/gcc_64/plugins/sqldrivers/./../../lib/libicuuc.so.56 (0x00007f9040f2f000)
   libicudata.so.56 => /opt/Qt5.6.2/5.6/gcc_64/plugins/sqldrivers/./../../lib/libicudata.so.56 (0x00007f903f54c000)
   libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007f903f348000)
   librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f903f140000)
   libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f903ee2c000)
   /lib64/ld-linux-x86-64.so.2 (0x000055cc9f2ce000)
   libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f903ebb9000)


Título: Re: QMYSQL driver not loaded
Publicado por: DoeJohn en 5 Agosto 2017, 10:54
Hola

Exactamente, te falta ese archivo. Obviamente imagino que tienes MySql instalado, tanto el cliente como el servidor.

Puede ser simplemente que MySql instale ese archivo con un nombre ligeramente diferente (como me ocurrió con los drivers de firebird) o en otra ubicación, así que localiza la instalación de MySql y mira si existe ese archivo u otro con nombre muy similar y te vale simplemente con crear un enlace en la carpeta que te indica el error: /usr/lib/x86_64-linux-gnu/

Un saludo


Título: Re: QMYSQL driver not loaded
Publicado por: AprendizPRG en 5 Agosto 2017, 12:14
hola hice lo indicado el error de la libreria desaparecio

pero eldriver sigue sin cargar


Título: Re: QMYSQL driver not loaded
Publicado por: DoeJohn en 6 Agosto 2017, 10:01
Hola

Pues entonces ya debería funcionar :(

Solo he usado una vez el driver de MySql y para un ejemplo, así que mucha experiencia no tengo con él. Sí recuerdo que tuve que compilar los drivers yo, con los que vienen por defecto con Qt fue imposible hacer la conexión.

Otro detalle fue que usando

Código:
db.setHostName("localhost");

Me fue imposible hacer la conexión, tuve que usar directamente la ip local:

Código:
db.setHostName("127.0.0.1");

Prueba este cambio y compila el driver, no vaya a ser eso.

Un saludo