En ocasiones no sabemos lo que MySQL hace por debajo. No sabemos si ha llegado a lanzarse la consulta o qué error está dando porque no estamos capturando la excepción en la aplicación que estamos desarrollando.
La alternativa: activar y visualizar el log de MySQL.
Escribe las siguientes secuencias entrando en mysql desde consola.
Primero entra en mysql:
mysql -p
Luego activa la tabla de log de mysql:
set global general_log=ON
Pasos básicos: veamos la tabla general_log:
mysql> describe mysql.general_log; +--------------+------------------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +--------------+------------------+------+-----+-------------------+-----------------------------+ | event_time | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | | user_host | mediumtext | NO | | NULL | | | thread_id | int(11) | NO | | NULL | | | server_id | int(10) unsigned | NO | | NULL | | | command_type | varchar(64) | NO | | NULL | | | argument | mediumtext | NO | | NULL | | +--------------+------------------+------+-----+-------------------+-----------------------------+ 6 rows in set (0.07 sec)
Así que esta tabla la puedes utilizar como una tabla común del esquema «mysql». Ejemplos:
Si deseamos encontrar las últimas llamadas a mysql.
select * from mysql.general_log order by event_time desc limit 5;
Si deseamos buscar por una IP concreto que ha lanzado la llamada a esa base de datos:
select * from mysql.general_log where user_host like '%192.168.%' order by event_time desc limit 5;
OJO! Esta tabla crece y crece sin parar. Es recomendable desactivarla
set global general_log=OFF
y de vez en cuando limpiarla:
truncate table mysql.general_log;
Toda ayuda para ver los errores es poca! Espero os sea de utilidad
Agradecimientos a @rcasas