Red de conocimiento informático - Conocimiento informático - Cómo solucionar el problema de que Qt Mysql no puede cargar el controlador

Cómo solucionar el problema de que Qt Mysql no puede cargar el controlador

Este artículo describe cómo resolver el problema de que Qt Mysql no puede cargar el controlador MySQL es un pequeño sistema de administración de bases de datos relacionales. ¡También es muy bienvenido para MySQL que ya está integrado en Qt! Así que leamos primero la introducción de este artículo.

Mientras hacía mi proyecto de graduación, una gran pregunta me ha desconcertado estos últimos dos días. Usé qt mysql para hacer mi proyecto de graduación. Como resultado, funcionó bien en mi propia computadora, pero cuando compilé una versión de lanzamiento y la llevé a otra computadora, apareció un error: No se puede cargar el controlador. Intenté resolver este problema y finalmente lo completé hoy, a continuación se muestra mi resumen.

Lo primero que debo explicar es que estoy usando qt para vc2005, qt4.5.0 mysql server5.5

Todo el proceso:

1: Primero, Se compiló una versión de lanzamiento y luego se usó un analizador de dependencias para verificar las dependencias de la biblioteca. Dependencias encontradas: bibliotecas QtSql4.dll, QtGui4.dll, QtCore4.dll, msvcr80.dll y KERNEL32.DLL. La última de ellas es una biblioteca del sistema de la que no tenemos que preocuparnos, el resto obviamente debe copiarse en el mismo directorio que el exe. Especialmente msvcr80.dll, busqué en la computadora: hay más de diez archivos con el mismo nombre, por lo que es muy importante copiar cuál. En este momento, solo necesitamos verificar las propiedades de este dll a través de la dependencia Edifier. Y luego vaya al directorio correspondiente. Simplemente cópielo. Entonces: el primer paso es copiar estas bibliotecas dependientes al mismo directorio que el exe (no se equivoque, especialmente si las versiones son diferentes).

2. Después de completar el paso 1, ejecútelo nuevamente y le preguntará: No se puede encontrar el controlador. Le pregunté a otros y me dijeron que es necesario realizar el siguiente trabajo:

(1) Primero cree un directorio secundario como complementos/sqldrivers en el mismo directorio que el archivo ejecutable y luego coloque el qsqlmysql4 generado por compilando el controlador qt-mysql antes de .dll.

(2) Luego agregue las siguientes dos oraciones en main.cpp:

QString strLibPath(QDir::toNativeSeparators(QApplication::applicationDirPath()) QDir::separator () " plugins"); qApp.addLibraryPath(strLibPath);

Después de completar estas dos partes: no debería haber ningún problema, pero después de ejecutarlo, encontré: todavía dice que no se puede encontrar el controlador.

3. Posteriormente revisé varias opiniones en Internet y encontré varias posibilidades: la computadora que desea publicar no tiene mysql instalado ② La versión de mysql es incorrecta. Me pregunto: no encuentro el controlador para mysql instalado o no instalado, ¿cuál es la conexión? Después de todo: el controlador lo compilé yo, no lo proporcionó mysql. Pregunté a otros y tuvieron la misma idea. Entonces estoy atrapado aquí. Sin inmutarme, seguí buscando en Internet todas las respuestas posibles y las probé. Finalmente, finalmente encontré el problema. Resultó que necesitamos copiar la biblioteca proporcionada por mysql: libmySQL.dll al mismo directorio que el exe (el archivo está en el directorio de mi propia computadora: C:\Program Files\. carpeta MySQL \MySQL Server 5.5\bin). Si ejecuta el programa nuevamente, ya no informará el error: ¡Controlador no encontrado! (El informe en este momento es: No se puede conectar a la base de datos especificada, esto se debe a que no importé el archivo de la base de datos a la computadora de destino).

Resumen: La publicación en otras PC requiere el siguiente trabajo:

1. Utilice el caminante de dependencias para verificar las dependencias de la biblioteca y copiarlas todas en la misma carpeta del archivo ejecutable.

2. (1) Cree un directorio secundario como plugins/sqldrivers en el mismo directorio que el exe y luego coloque en él el controlador qt-mysql: qsqlmysql4.dll generado por la compilación anterior.

(2) Luego agregue las siguientes dos oraciones en main.cpp:

QString strLibPath(QDir::toNativeSeparators(QApplication::applicationDirPath()) QDir::separator () " plugins"); qApp.addLibraryPath(strLibPath);

3. Copie libmySQL.dll del directorio mysql/bin al mismo directorio que el exe.

Después de completar los pasos anteriores, todo debería estar bien.

En cuanto a la última falla reportada para conectarse a la base de datos especificada, el motivo es el siguiente:

Al desarrollar la computadora: estableció una base de datos mysql, entonces debemos usar esta archivo de base de datos Copie en la computadora de destino e instale mysql en la computadora de destino e importe el archivo de base de datos en ella. Después de la importación, encontrará que los datos de cada campo pueden estar confusos. ¡Esto se debe al formato de codificación inconsistente de cada campo entre la máquina de desarrollo y la máquina de destino! Debe restablecer el formato de codificación de los campos en la máquina de destino de acuerdo con la configuración del archivo de base de datos en la máquina de desarrollo.

El método para importar el archivo de base de datos en la máquina de destino es: (tome el nombre de la ruta de datos creada buaa.sql como ejemplo)

1. Instale mysql en la máquina de destino<. /p>

2. Ejecute mysql en la línea de comando y ejecute el comando después de ingresar: crear base de datos buaa;

3. Importe buaa..sql a la base de datos buaa recién creada. (Estoy usando la herramienta de gráficos de base de datos mysql-front).

Prueba: Qt4.5.0commercial vc2005 express mysql5.5 mysql-front windows xp

(Muchas personas en Internet dijeron: No puedo encontrar el controlador porque vc no está instalado en el tiempo de ejecución de la máquina de destino, pero no tengo este problema aquí: la computadora en la que estoy probando no tiene ningún entorno vc, no tiene ningún entorno qt y no tiene Windows SDK instalado. Si tiene dificultades para realizar la prueba anterior: puede considerar ejecutarla en la computadora de destino. Instale la biblioteca de tiempo de ejecución de vc y pruébela. Está dividida en versión sp1 y no sp1. Puede elegir una para instalar según vc. versión del host)

Resumen: Cómo solucionar el problema de falla de Qt Mysql La introducción al problema de cargar el controlador termina aquí. Parece que muchos amigos todavía tienen este problema. será de ayuda para todos.