Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-03-2008
fmatias fmatias is offline
Miembro
 
Registrado: jun 2003
Posts: 25
Poder: 0
fmatias Va por buen camino
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.
__________________
www.creativoz.com
Responder Con Cita
  #2  
Antiguo 26-03-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Código Delphi [-]
 if not LongBool(LoadLibrary('libmysql.dll')) then
  ShowMessage('ERROR');

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
Responder Con Cita
  #3  
Antiguo 26-03-2008
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
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.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #4  
Antiguo 26-03-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por AzidRain Ver Mensaje
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.
Muy cierto amigo Azid... pero el servicio del MySQL puede tener el nombre que el usuario elija o puede depender del instalador (Ej. Wamp, xamp, AppServ, localhost [dec], etc) entonces no podemos buscar un nombre o un patron en el nombre de un servicio. Tampoco podemos buscar una ruta específica por el mismo motivo... problema que afecta hasta la busqueda en el registro.

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
Responder Con Cita
  #5  
Antiguo 26-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 26-03-2008
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
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.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #7  
Antiguo 26-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
Cita:
Empezado por AzidRain Ver Mensaje
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.
Yo no lo olvidé y por ello es el comentario que hice.

Bye
Responder Con Cita
  #8  
Antiguo 26-03-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por keyboy Ver Mensaje
Cita:
Empezado por AzidRain Ver Mensaje
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.
Yo no lo olvidé y por ello es el comentario que hice.

Bye
La forma de comprobar si existe el MySQL (demonio), es mediante el cliente (APIs definidas en libmysql.dll o myodbcX.dll); pues como ya he expuesto comprobar las variaciones de nombre de servicio, ubicación/nombre del archivo(servicio), registro, o puerto de escucha es más complicado que la línea que he puesto en mi primer post.

Última edición por cHackAll fecha: 26-03-2008 a las 21:03:41. Razón: F7
Responder Con Cita
  #9  
Antiguo 26-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
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

Última edición por keyboy fecha: 26-03-2008 a las 21:16:02. Razón: Aclarar
Responder Con Cita
  #10  
Antiguo 26-03-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
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?
Responder Con Cita
  #11  
Antiguo 26-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
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
Responder Con Cita
  #12  
Antiguo 26-03-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por keyboy Ver Mensaje
Incluso hay componentes como MyDac que pueden acceder a un servidor MySQL sin la librería.
Cita:
Empezado por http://www.crlab.com/mydac/faq.html
What software should be installed on a client computer for MyDAC-based applications to work?

Usually, you do not need any additional files. The only exceptions to this rule are listed below:
  • If you are using MySQL Embedded server (if you are using TMyConnection with TMyConnection.Options.Embedded = True or TMyEmbConnection), you need the server itself (libmysqld.dll) and the service files for it, for example errmsg.sys.
  • If you are connecting in Client mode, (TMyConnection.Options.Direct = False), you need libmysql.dll.
  • If you are using SSL (TMyConnection.Options.Protocol = mpSSL), you need the OpenSSL library files - ssleay32.dll and libeay32.dll.
Cita:
Empezado por keyboy Ver Mensaje
O quizá con telnet, a ver si responde el puerto 3306 o donde se supone que esté instalado.
Cita:
Empezado por my.ini
...
[mysqld]
# The TCP/IP Port the MySQL Server will listen on
port=3306
...
Efectivamente la conexion se la debe realizar, mediante alguna libreria.

PD: habra que mover el hilo a la sección de debates

Saludos
Responder Con Cita
  #13  
Antiguo 26-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
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
Responder Con Cita
  #14  
Antiguo 26-03-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por keyboy
No sé bien porqué deba ser un debate.
Cierto; esta bien donde está!

Cita:
Empezado por my.ini
port=3666
Código:
MyDAC; Can't connect to MySQL server on '???'...
telnet y "otros" tampoco retornan una respuesta satisfactoria ante tal eventualidad; ahora estamos hablando (como tu ya dijiste), de una pregunta genérica a la cual he respondido de la forma más objetiva posible, y como ya le dije al compañero AzidRain;

Cita:
Empezado por cHackAll
...ésta, mi humilde impresión y cualquier otro método (efectivo), sera doblemente bienvenido.
Responder Con Cita
  #15  
Antiguo 27-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
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:
O quizá con telnet, a ver si responde el puerto 3306 o donde se supone que esté instalado
Yo a lo que voy es a que ninguno de los métodos expuestos es fiable. Pero, insisto, el método del LoadLibrary únicamente determina una cosa: hay o no una librería libmysql.dll en el path de Windows. Nada más. La existencia o no de dicha librería tiene poco que ver con la disponibilidad del servidor (demonio), como ya he expuesto.

Bye
Responder Con Cita
  #16  
Antiguo 27-03-2008
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Pero seguimos cayendo en lo mismo, supongamos el siguiente pseudocódigo para el hipotético instalador:

Código:
  Si Existe la dll
      Si puedo conectarme a MySQL en el puerto 3306 en localhost
          Creo las bases de datos y las tablas y procedo a la instalación.
      de lo contrario
         Error: No es posible conectarme al servidor en localhost
  de lo contrario
    No está instalado (!!) MySQL
Por definición un instalador de cualquiera que sea el programa no tiene por que leches presuponer que ya se encuentra instalado el servidor fulano, mengano o perengano. El servidor de bases de datos es un programa INDEPENDIENTE de la aplicación en cuestión por lo que lo más que puede hacer el instalador es preguntar en donde se supone que está instalado y actuar en consecuencia:

Código:
  Desempaqueta la DLL que usa el componente mediante el cual te conectas a MySQL   
(Zeos, MyDac, "MyAbuela") en la carpeta del instalador. 
  Escribe "Te advierto que para instalar este programa es necesario que previamente esté
 instalado  MySQL  y que hayas dado de alta un usuario válido con privilegios en la base de datos "xxxx".
  Pregunta "Dame la dirección del servidor MySQL?"
  Pregunta "Con qué usuario voy a entrar a MySQL?"
  Pregunta "Con qué password?"
  
  Si puedo conectarme al servidor con los datos indicados
    voilá...procede a crear la base de datos y crear las tablas.
    continúa la instalación.
  de lo contrario
    Error:  No fue posible conectarse al servidor indicado con los datos proporcionados.
Por mera seguridad hay que dar de alta el usuario de MySQL y crear la base de datos a la cual tendrá acceso. No quiero ni pensar en que se les ocurra darle el root como usuario para que haga lo que se le pegue la gana con las bases de datos.

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.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #17  
Antiguo 27-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
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
Responder Con Cita
  #18  
Antiguo 27-03-2008
fmatias fmatias is offline
Miembro
 
Registrado: jun 2003
Posts: 25
Poder: 0
fmatias Va por buen camino
Cita:
Empezado por keyboy Ver Mensaje
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
Acabo de conectar al foro para ver si alguien había contestado a mi duda sin pensar en que esta pregunta iba a generar tanto debate ...

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.
__________________
www.creativoz.com
Responder Con Cita
  #19  
Antiguo 27-03-2008
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
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.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #20  
Antiguo 28-03-2008
vinicc vinicc is offline
Miembro
 
Registrado: ago 2006
Posts: 31
Poder: 0
vinicc Va por buen camino
Red face 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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Comprobar si se esta conectado a internet Drake OOP 7 21-12-2006 15:38:18
En que pc esta instalado Mysql? pborges36 Conexión con bases de datos 4 30-06-2006 21:43:59
saber si esta php instalado coulthard Internet 4 20-04-2006 19:56:43
FireBird: Winsock 2 no esta instalado JulioGO Firebird e Interbase 1 02-09-2004 19:09:00
como comprobar que está instalado el BDE? lemon-club Conexión con bases de datos 1 14-06-2003 18:49:20


La franja horaria es GMT +2. Ahora son las 13:29:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi