Convirtiendo de Timestamp a Date desde Mysql

Cuando estaba a punto de irme de la oficina, Guille me tiró una preguntita, de esas que hacen que cuando no te acordás, te pongas a probar y probar hasta resolverlo.

La pregunta se refería a cómo pasar una fecha en formato Timestamp al formato Date (una representación más humana).

Lo primero que pensé fue en usar Php (por asumir qué así lo quería hacer), pero no, lo que quería era sacar el registro, directamente desde la base de datos, aplicando la conversión en el propio Mysql al momento de la consulta.

Como ya me ha pasado en otras ocasiones, supuse que encontraría en la documentación alguna función mágica que resolviera el problema… y por suerte, no me equivoqué.

Para convertir directamente desde la consulta una fecha desde timestamp a date, sólo hay que aplicar la siguiente función:

select from_unixtime(1224815188);

El resultado que obtenemos es:

2008-10-24 00:26:28

Nada más, con eso, problema resuelto.

Para más referencias sobre funciones de fecha, pueden mirar en la documentación oficial.

(Otro post cortito y al pié).

Restaurar backups de Mysql

En ésta oportunidad, vamos a ver cómo restaurar una base de datos en Mysql. Además, algunas aclaraciones sobre el uso de mysqldump que pueden ayudarnos con las restauraciones de bases de datos.

La forma de restaurar una base de datos Mysql desde la consola, tomando un backup, sería asi.

mysql -u usuario -p basededatos < basededatos.sql

El escenario que estoy suponiendo, implica que la base de datos que están queriendo importar no existe en su servidor Mysql.

Si este supuesto es correcto, se van a encontrar con un problemita, o mejor dicho, con un mensaje al ejecutar el comando.

ERROR 1049 (42000): Unknown database 'basededatos'

Esto se debe a la inexistencia de la base dentro de nuestro Mysql.

Tenemos dos maneras de resolver ésta situación.

  1. Editar el archivo sql y agregarle a mano los comandos necesarios para la creación de la base.
  2. Agregar dos parámetros a nuestro comando mysqldump.

Continue reading

Mejorando el rendimiento de Magento ajustando la configuración de Mysql

Uno de los grandes temas, la performance de Magento.

Hay que reconocer que si bien en el salto de la versión 1.0.x a la 1.1.x hubieron mejoras significativas, nunca está de más prestarle atención a las configuraciones de nuestro servidor.

Las siguientes indicaciones, comentadas en el post sobre rendimiento de Magento, nos regalan una mejora destacable en el comportamiento de Mysql.

Los cambios a la configuración que se proponen son:

[mysqld]
key_buffer = 512M
max_allowed_packet = 64M
table_cache = 512
sort_buffer_size = 4M
read_buffer_size = 4M
read_rnd_buffer_size = 2M
myisam_sort_buffer_size = 64M
tmp_table_size = 128M
query_cache_size = 96M
query_cache_type = 1
thread_cache_size = 8
max_connections = 400
wait_timeout = 300

Continue reading

OLD_PASSWORD en Mysql

Cuando Mysql pasó a la versión 4.1, la mayoría hicimos el cambio, actualizamos la base de datos, se habrá ajustado el código si correspondía, y se actualizaron los conectores de Mysql.

Uno de los cambios fue en el algoritmo de autenticación que utiliza la base de datos.

Muchos de los programas que se utilizaban, hicieron lo propio, y también actualizaron; pero hubieron algunos que no lo lograron (por los motivos que sea). En mi caso, fue el DBDesigner el que me trajo algo de dolor de cabeza.

Al querer conectarse, se obtenía un poco agradable mensaje que rezaba.

Client does not support authentication protocol requested
by server; consider upgrading MySQL client

Por suerte, existe una solución de compatibilidad.

Continue reading

Mantenimiento de tablas en Mysql

Pequeña gran instrucción para mantener la salud de nuestras tablas.

OPTIMIZE TABLE tabla;

Lo que logramos es eliminar por completo todo el espacio ocupado por registros que ya han sido borrados. Si esto lo pensamos sobre una tabla que tiene, como mínimo, miles de escrituras diarias, vamos a poder ver cómo ayuda la ejecución periódica de ésta sentencia.

Para más información, la documentación oficial.