Actualmente, a la hora de desarrollar aplicaciones, se utilizan multitud de frameworks que nos abstraen de la base de datos que se utilizan. A pesar de las ventajas que esto proporciona, tiene un pequeño “pero”. Perdemos el control sobre las consultas, y en algún momento del desarrollo acabaremos teniendo algún problema que podriamos solucionar rápidamente sabiendo la consulta exacta que se ejecuta.

Para evitar este tipo de cosas, Mysql dispone de un estupendo log de consultas, que podemos activar  y ver la consulta exacta que hace nuestro framework a la base de datos.

Para activar y ver dicho log es bastante sencillo:

mysql> set global general_log='on';
mysql> set global log_output='table';
mysql> select * from mysql.general_log\G

El resultado será algo parecido a esto:

*************************** 47. row ***************************
event_time: 2012-08-29 11:43:46
user_host: root[root] @ localhost [127.0.0.1]
thread_id: 85
server_id: 1
command_type: Query
argument: SHOW FULL COLUMNS FROM `activites` FROM `gas` LIKE 'journee'
*************************** 48. row ***************************
event_time: 2012-08-29 11:43:46
user_host: root[root] @ localhost [127.0.0.1]
thread_id: 85
server_id: 1
command_type: Query
argument: INSERT INTO gas.activites (id, matricule, secteur, secteur2, CIN,
journee) VALUES (0, 30, 4, 4, '12345678X', null)

Donde vemos las consultas que se hacen directamente en la base de datos y detectar posibles errores que nos den una idea de por donde encaminar una posible solución.

Una vez que acabemos, es recomendable desactivar los logs, por tema de eficiencia y para no llenar de basura la tabla, que en un futuro nos haga más dificil volver a buscar fallos.

mysql> set global general_log='off';

En caso de querer vaciar la tabla de log, tan sencillo como:

truncate table mysql.general_log;

Y para acabar, este truquito, lo ví en el libro Mysql Troubleshooting de O’Really , que tiene bastantes cosas interesantes respecto a mysql.

« »