Doctrine est pratique mais pour voir la requête finale exécutée par le serveur c’est compliqué. Le plus simple est de demander directement à ce dernier de les enregistrer.
Ponctuellement
Pour cela il faut exécuter les requêtes suivantes sur le serveur
SET GLOBAL log_output = FILE;
SET GLOBAL general_log_file = "/path/to/logs/mysql.log";
SET GLOBAL general_log = ON
et toutes les requêtes seront sauvegardées dans /path/to/logs/mysql.log
Warning
~
ne fonctionne pas dans le nom du fichier, il faut utiliser le chemin absolu.- Le dossier doit exister sur le serveur
il est aussi possible de les sauvegarder dans la table mysql.general_log
en exécutant à la place
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON'
On peut ensuite désactiver le log
SET GLOBAL general_log = 'OFF'
De façon permanente
C’est le même système mais dans le fichier my.cnf
dans la partie [mysqld]
[mysqld]
log_output = FILE
general_log_file = "/path/to/logs/mysql.log"
general_log = ON
et toutes les requêtes seront sauvegardées dans /path/to/logs/mysql.log
il est aussi possible de les sauvegarder dans la table mysql.general_log
en ajoutant à la place
[mysqld]
log_output = TABLE
general_log = ON
Warning
Les logs commencent dès que le serveur est démarré et toutes les requêtes sont enregistrées. Il ne faut pas oublier de vider la table ou le fichier régulièrement
Sources :