FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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 |
#3
|
||||
|
||||
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|| |
#4
|
||||
|
||||
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 |
#5
|
|||
|
|||
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 |
#6
|
||||
|
||||
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|| |
#7
|
|||
|
|||
Cita:
Bye |
#8
|
||||
|
||||
Cita:
Última edición por cHackAll fecha: 26-03-2008 a las 21:03:41. Razón: F7 |
#9
|
|||
|
|||
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 |
#10
|
||||
|
||||
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?
|
#11
|
|||
|
|||
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 |
#12
|
||||
|
||||
Cita:
Cita:
Cita:
Cita:
PD: habra que mover el hilo a la sección de debates Saludos |
#13
|
|||
|
|||
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 |
#14
|
||||
|
||||
Cita:
Cita:
Código:
MyDAC; Can't connect to MySQL server on '???'... Cita:
|
#15
|
|||
|
|||
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 |
#16
|
||||
|
||||
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 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. 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|| |
#17
|
|||
|
|||
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 |
#18
|
|||
|
|||
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.
__________________
www.creativoz.com |
#19
|
||||
|
||||
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|| |
#20
|
|||
|
|||
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. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
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 |
|