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();
}
¿Copiando el .so a la carpeta en la que está el programa funciona?
gracias
pero eso ya lo intente y no funciona
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)
javascript:void(0); nada de nada
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
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.
hola amigo
gracias de todos modos
pero llevo dias buscando por la web y no logro solucionar el problema
saludos!
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
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)
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
hola hice lo indicado el error de la libreria desaparecio
pero eldriver sigue sin cargar
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
db.setHostName("localhost");
Me fue imposible hacer la conexión, tuve que usar directamente la ip local:
db.setHostName("127.0.0.1");
Prueba este cambio y compila el driver, no vaya a ser eso.
Un saludo