Mostrando las entradas con la etiqueta MySQL. Mostrar todas las entradas
Mostrando las entradas con la etiqueta MySQL. Mostrar todas las entradas

13 junio 2020

Cambiar el servicio de MySQL instalado con el parámetro --defaults-file

En Windows, para cambiar la ubicación del archivo de configuración my.ini cuando MySQL se ejecuta como servicio usando el parámetro --defaults-file, la opción rápida es recrear el servicio. 

Para ello, ejecutamos las siguientes instrucciónes:

1) Detener el servicio si actualmente se encuentra en ejecución

net stop MySQL

2) Eliminar el servicio usando el comando sc delete y el nombre del servicio

sc delete MySQL

3) Crear el nuevo servicio de la siguiente forma 

mysqld --install MySQL --local-service --defaults-file="C:\Data\MySQL\my.ini"

Donde:
  • mysqld es el archivo ejecutable ubicado en la carpeta bin de los archivos del servidor
  • --install es el parámetro que sirve para realizar la instalación del servicio
  • --local-service para que se utilice la cuenta de usuario correspondiente a "Local Service", y 
  • --defaults-file para indicar la ruta donde se encuentra nuestro archivo de configuración my.ini
 

08 diciembre 2013

MySQL ODBC Authentication Protocol Refused

En las nuevas versiones del conector ODBC para MySQL nos podemos topar con un mensaje de error como el siguiente:

Connection using old (pre-4.1.1) authentication protocol refused

Lo que nos está indicando es que en el servidor al que intentamos conectarnos se encuentra configurado el parámetro OLD_PASSWORDS o podríamos estar intentando conectarnos a un servidor MySQL anterior a la versión 4.1 en la cual se cambió el protocolo de autenticación.

Si tenemos acceso a la configuración del servidor MySQL lo ideal sería actualizarlo a una versión reciente o desactivar el parámetro OLD_PASSWORDS si fuese MySQL 4.1 o posterior.

La otra opción que tenemos es utilizar una versión previa del conector ODBC. En mi caso la versión 5.1.13 que se puede descargar del sitio de MySQL presentó el mismo problema, pero por suerte tenía guardada la versión 5.1.8 que me saco de apuros.

28 septiembre 2010

MySQL ODBC de 32 bits en Win7 de 64 bits

Actualización: en la versión Connector/ODBC 5.1.8 32-bit ya no es necesario registrar manualmente el controlador en Windows 7 de 64 bits, dado que el paquete de instalación ahora se registra correctamente.
Algunas veces, los cambios no son tan simples como quisieramos pensar...

Tomemos por ejemplo al usuario que adquiere un equipo nuevo de 64 bits y con él el novedoso y "muy seguro" Windows 7. Hasta acá todo bien, pues la mayoría de aplicaciones de 32 bits se ejecutarán de manera transparente gracias al emulador de Windows para aplicaciones de 32 bits.

Sin embargo, algunos programitas requieren un poco más de esfuerzo, por ejemplo, el Connector ODBC de MySQL. Ya que el programa de instalación de 32 bits, sea este MSI o EXE no permitirá su instalación.

¿Por qué es necesario instalar MyODBC 32-bit? simplemente porque el desarrollo interno no se mueve al mismo ritmo que el resto de la industria de software, y muchas son las aplicaciones al rededor del mundo que se desarrollaron en herramientas como VB6 (y dado que aun funcionan, no hay necesidad inmediata de cambiarlas, o al menos así piensa la mayoría de empresas).

En el Windows de 64 bits tenemos dos carpetas adicionales, que son:

X:\Program Files (x86)
X.\Windows\SysWOW64


La conocida carpeta System32 es utilizada ahora para las aplicaciones de 64 bits, mientras que la carpeta para las aplicaciones de 32 bits pasa a ser SysWOW64.

Pasos para instalar el ODBC de MySQL en Win7 64-bit

1) Obtener del sitio de descargas de MySQL el ODBC no instalable (es decir, en archivo ZIP)

mysql-connector-odbc-noinstall-5.1.7-win32.zip

2) Desempaquetar el contenido del archivo descargado

3) Modificar el archivo "Install.bat", agregando la ruta a SysWOW64 en las partes resaltadas.

SET installdir=none
IF EXIST %windir%\system\nul SET installdir=%windir%\system
IF EXIST %windir%\system32\nul SET installdir=%windir%\system32
IF EXIST %windir%\SysWOW64\nul SET installdir=%windir%\SysWOW64
IF %installdir%==none GOTO :doError5

ECHO Registering driver
C:\Windows\SysWOW64\myodbc-installer -d -a -n "MySQL ODBC 5.1 Driver" -t "DRIVER=myodbc5.dll;SETUP=myodbc5S.dll"

4) Abrir el símbolo del sistema (consola) como administrador (clic derecho, opción "Ejecutar como Administrador")

5) Ejecutar el archivo "Install.bat".

Cabe mencionar, que para ver los orígenes de datos de 32 bits tendremos que recurrir al archivo "odbcad32.exe" que se encuentra en la carpeta SysWOW64.

13 enero 2009

Script para respaldar una base de datos de MySQL en Linux

Existen varias opciones para respaldar una base de datos en un equipo con Linux, pero no siempre tenemos a la mano las mismas herramientas dependiendo del sabor de Linux que nos veamos obligados a utilizas.

Hasta ahora la forma más cómoda que he encontrado para respaldar una base de datos es un simple Script que extrae la base de datos y la empaqueta en un archivo Zip.

Por ejemplo, si tenemos el archivo Respaldo.sh con el siguiente contenido:

F=$(date +"%Y%m%d")
mysqldump --opt -u root -p MiBase > MiBase.sql
zip -r Copia-$F.zip MiBase.sql
rm MiBase.sql


Al ejecutarse el archivo extraerá la base de datos al archivo MiBase.sql para luego comprimirla en el archivo nombrado como Copia seguido de la fecha y la extensión Zip.

Cabe mencionar que el archivo en cuestión debe tener privilegios de ejecución, y que al momento de ejecutarse pedirá la contraseña (lo cual se evita agregando la misma seguido del parámetro -p aunque ello implique una disminución de la seguridad).

29 diciembre 2008

CAST(field AS DECIMAL) en MySQL 4.1

El tipo DECIMAL para la función CAST de MySQL en 4.1 no está implementado por lo que no disponemos de esta útil función al momento de querer convertir un dato a decimal. Empero, luego de darle vueltas al asunto, me encontré con que utilizando la función ROUND le podemos jugar la vuelta al MySQL.

SELECT ROUND(IFNULL(campo_de_texto,0),2) resultado FROM mi_tabla


...et voilà!

La función IFNULL es utilizada sólo para no tener sorpresas con campos que pudieran almacenar datos nulos, pues la función ROUND al igual que muchas al encontrar un dato nulo devuelve como resultado también nulo.

23 mayo 2008

Número de fila en MySQL

Luego de buscar información en la red y de haber navegado a través de varios foros me encontré con la que me pareció la solución más bonita para obtener el número de fila en el conjunto de datos recuperado con la instrucción SELECT.

Habiendo visto varias soluciones de tipo "crear tabla temporal con un campo autonumérico" o "utilizar LEFT OUTER JOIN" me encontré con una variante de lo que a continuación expongo:

SET @i = 0;
SELECT
(@i := @i + 1) linea, nombre FROM personas ORDER BY nombre;

Estas dos instrucciones nos devolverán para todos los registros de la tabla [personas], la línea y el nombre. Si no inicializamos la variable @i (primera instrucción) el valor quedará disponible por lo que al volver a ejecutar una consulta que utilice dicha variable notaremos el resultado.

Si lo que deseamos es enumerar los registros dentro de un grupo, por ejemplo, si agruparamos a las personas por la columna [id_tipo], quedaría de la siguiente forma .

SET @tipo = 0;
SELECT id_tipo, IF(@tipo = id_tipo,@tipo := @tipo + 1,@tipo := 1) linea , nombre
FROM personas
ORDER BY id_tipo, nombre;

Una alternativa para no tener que fijar el valor de la variable en una instrucción por separado sería, agregar la subconsulta

(SELECT @tipo := 0) dummy

como aparece a continuación:

SELECT id_tipo, IF(@tipo = id_tipo,@tipo := @tipo + 1,@tipo := 1) linea , nombre
FROM personas, (SELECT @tipo := 0) dummy
ORDER BY id_tipo, nombre;