Introducción
En ocasiones queremos depurar qué consulta se ejecuta de forma efectiva en la base de datos (por ejemplo al usar consultas preparadas o un ORM) y la forma de hacer cuando usamos como SGBD MySQL es activar el General Query Log.
Este Log es un registro de las consultas que va ejecutando el servidor MySQL. Además, hay que tener presente que este log se debe activar sólo cuando estamos depurando una funcionalidad puntual pues en servidores muy activos puede crecer hasta alcanzar un gran tamaño.
Uso de General Query Log
Lo primero es editar el firchero my.cnf (o my.ini en windows) y buscar la sección [mysqld]. En ella pondremos las opciones:
general_log_file = /path/to/query.log
general_log = 1
Tras reiniciar el servidor mysql, podemos abrir el fichero de log y ejecutar varias consultas:
$ mysql -uroot mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 212
Server version: 5.7.21 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select User, Host from user;
+---------------+-----------+
| User | Host |
+---------------+-----------+
| tienda | % |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-----------+
4 rows in set (0.00 sec)
El fichero de log generado por el servidor contiene:
wampmysqld, Version: 5.7.21-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: /tmp/mysql.sock
Time Id Command Argument
2018-11-20T10:55:09.930402Z 2 Connect root@localhost on mysql using TCP/IP
2018-11-20T10:55:09.934477Z 2 Query select @@version_comment limit 1
2018-11-20T10:55:20.218671Z 2 Query select User, Host from user
2018-11-20T10:55:21.721707Z 2 Quit
Y estas son las sentencias que se ejecutan en MySQL.