![]() |
Comprobar si está instalado MYSQL
Buenas tardes,
Estoy preparando mi asistente para la instalación de un programa bajo delphi 7 con bases de datos mysql. Quisiera saber cómo comprobar si mysql está instalado en windows para no volver a instalarlo. Gracias. Fco. Matías. |
LoadLibrary busca en el path la librería necesaria para comunicarce con el servidor de BDs, si no puedes cargar dicha librería significa que puede no estar instalado el MySQL. Saludos |
Pero la inexistencia de la biblioteca de enlace dinámico,la cual por cierto varía de acuerdo al componente que ocupamos, no indica per se que MySQL esté o no instalado. Y aún así, podría estar instalado pero no cargado o iniciado el servicio.
|
Cita:
Cual es el factor común de todos estos? la disponibilidad de la LIBRERIA (no componente), que permite la comunicación con el Servidor. Claro; ésta, mi humilde impresión y cualquier otro método (efectivo), sera doblemente bienvenido. Saludos |
Pero están hablando de dos cosas distintas. Por un lado está el servidor y por otro lado el cliente (libmysql.dll) y pueden estar instalados uno u otro, ambos o ninguno. De hecho, creo que el compañero fmatias debería especificar qué entiende por tener MySQL instalado; si se refiere al servidor, o se refiere a la biblioteca libmysql.dll.
Bye |
Olvidamos que el servidor podría estar instalado y ejecutándose en otro equipo por lo que nuevamente, el que no exista la dll en el equipo local no es señal de que no esté instalado el servidor.
Por otro lado....MySQL NO PUEDE DISTRIBUIRSE COMO PARTE DE UN PRODUCTO ADICIONAL a menos que cuentes con la licencia comercial del mismo. Tu instalador por lo tanto NO DEBE instalar MySQL. Si revisas la gran cantidad de productos que hay que usan tablas MySQL, ninguno lo instala. De hecho tanto WAMP como XAMPP lo instalan pero como programa independiente y no como parte del producto, aunque de hecho ni uno ni otro son productos sino meras recopilaciones. Lo recomendable es que instales MySQL por serparado y tu instalador, eso sí, solicite datos del servidor con el que va a trabajar (dirección, usuario, etc.) y a partir de ahi crear las bases de datos y tablas necesarias, pero te repito, esto lo debe hacer de manera separada e independiente de MySQL. |
Cita:
Bye |
Cita:
|
No es correcto. Puedes no tener el servidor en marcha, o incluso no tenerlo instalado en absoluto, y tener esa librería. El código que pones la cargará sin problema y no marcará el error. Como ya se ha mencionado, el servidor puede residir en otra máquina.
Por eso digo, si por tener instalado MySQL se entiende tener esa librería entonces tu código la detectará. Pero eso es distinto de tener el demonio activo o siquiera instalado. Lo recíproco también es cierto. Es decir, puedes tener el servidor instalado pero no tener esa librería. Incluso hay componentes como MyDac que pueden acceder a un servidor MySQL sin la librería. Bye |
Tienes toda la razon, con tal idea dime; cómo vas a verificar si el demonio está corriendo en localhost o en cualquier otro equipo remoto? :rolleyes:
|
Es una buena pregunta, a la que áun hay que contestar :)
Posiblemente usaría libmysql, pero no sólo cargándola, sino tratando de establecer una conexión con el servidor. O quizá con telnet, a ver si responde el puerto 3306 o donde se supone que esté instalado. Bye |
Cita:
Cita:
Cita:
Cita:
PD: habra que mover el hilo a la sección de debates :rolleyes: Saludos |
No entiendo la referencia a la documentación de MyDac. De hecho confirma lo que dije a ese respecto: si se usa la opción (por defecto) TMyConnection.Options.Direct = true, no es necesaria ninguna librería.
Y el INI, ¿qué con eso? Si el instalador lo que está verificando es la instalación del demonio, pues algo debe saber de antemano, como es el puerto que esté escuchando. De lo contrario estamos hablando aún más en el aire, y la pregunta original debiera ser: ¿cómo saber si [el servidor de] MySQL está instalado en tal puerto? No sé bien porqué deba ser un debate. ¿Piensas aún que LoadLibrary es suficiente para determinar si MySQL está instalado? ;) Yo más bien pienso que hay que seguir buscando opciones de cómo determinarlo. Pero, sobre todo, que el compañero aclare qué es exactamente a lo que se refiere. Bye |
Cita:
Cita:
Código:
MyDAC; Can't connect to MySQL server on '???'... Cita:
|
A ver, creo que empiezo a ver por donde vas. Pero es que eres un poco escueto (no lo digo en mal plan) y si me pones un fragmento de un INI y un extracto de un DOC sin más explicación, pues bueno, yo al menos no soy tan clarividoso.
Es cierto, telnet tampoco va a ser infalible. De hecho no lo dije con mucho convencimiento Cita:
Bye |
Pero seguimos cayendo en lo mismo, supongamos el siguiente pseudocódigo para el hipotético instalador:
Código:
Si Existe la dll Código:
Mis chavos, no se confundan, MySQL, FireBird, Posgress y SQL Server son todas aplicaciones INDEPENDIENTES de su software y por mucho que quieran automatizar las tareas NUNCA deben instalarse al mismo tiempo. No por nada en muchos proyectos de desarrollo se asigna un DBA para que se haga cargo de pelearse con el motor de su elección a condición de que podamos hacer lo que necesitamos con las tablas. Como ya mencioné y al parecer nadie leyó, si mi aplicación necesita MySQL debo indicarlo en la documentación y al principio de la instalación. El usuario "es responsable" de tener instalado MySQL y con el ususario que se le pide para poder continuar. Pero en fin, si queremos seguir haciendo chapuzas pues hagámoslas que caray. |
Desconozco en qué parte he mencionado algo en favor o en contra de instalar MySQL junto con nuestra aplicación. Yo me he limitado a argumentar porqué tales o cuales métodos me parecen insuficientes para determinar la existencia del servidor, y a señalar que no es lo mismo determinar si está instalado el servidor o el cliente.
De hecho yo tampoco instalaría el servidor junto con mi aplicación por el mero hecho de que muy posiblemente el servidor residirá en otra máquina. Asímismo, tampoco crearía usuarios, y, por cierto, tampoco crearía ni bases ni tablas, que lo haga el DBA. Pero hay de casos a casos, y quizá se trate de una aplicación local donde no hay DBA ni nada que se le parezca. No veo ningún problema entonces en que el instalador cree usuarios, bases y tablas. ¿Chapucero? Pues si lo quieres calificar así. Para mi sería un ahorro de trabajo. Claro que todo esto es debatible, y quizá a eso se refiere el compañero cHackAll con lo de trasladar este hilo a debates. Bye |
Cita:
Cuando digo de comprobar si está instalado, me refiero del lado del servidor. Si está instalado simplemente pedir los parámetros de configuración. Si no existe MySql instalado en el servidor, mostrar un mensaje para que se instale el motor de base de datos antes de seguir con la instalación de mi aplicación. Del lado cliente no me preocupa mucho, porque basta con copiar el fichero libmysql.dll en la misma carpeta donde se guarda el ejecutable. Saludos. |
Pues ahi tienes ya tu solución, de hecho basta con que pidas los parámetros para conectarse y con ello intentar hacerlo, si no se puede pues posiblemente no está instalado.
|
una opinión
He leído todo el debate sobre la pregenta del amigo fmatias y solo quiero comentar sobre lo que hago al respecto de la instalación de mis aplicaciones.
Antes quiero aclarar que soy nuevo en el desarrollo de aplicaciones 1o. Instalo MySQL en el servidor de datos en las terminales 2o. Instalo MySQL Connector 3.1.0 3o. Establezco una conexión DSN 4o. Instalo mi aplicación Seguramente no es lo mejor pero me funciona y los usuarios de mis aplicaciones no tienen objeción alguna, lo que si es cierto es que hay cierta dependencia para con ellos. |
La franja horaria es GMT +2. Ahora son las 21:46:44. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi