Mysql
 sql >> Database >  >> RDS >> Mysql

Come faccio a registrare solo le query grezze in MySQL?

Per abilitare la query di registro completa, aggiungi quanto segue al tuo my.cnf:

log=/var/log/mysqldquery.log

Quanto sopra registrerà tutte le query nel file di registro.

Non dimenticare di riavviare il servizio MySQL dopo aver apportato modifiche al file my.cnf.

Esempio di output da azioni tramite SequelPro (client mac):

090721 11:06:45      51 Query       ALTER TABLE `test` ADD `name` varchar(10) DEFAULT NULL
                     51 Query       SHOW COLUMNS FROM `test`
                     51 Query       SHOW INDEX FROM `test`
090721 11:06:57      51 Query       SHOW COLUMNS FROM `test`
                     51 Query       UPDATE `test` SET `id`='1', `name`='test' WHERE `id` = '1' AND `name` IS NULL LIMIT 1
                     51 Query       SELECT * FROM `test` LIMIT 0,100
                     51 Query       SELECT COUNT(1) FROM `test`   
090721 11:07:00      51 Query       UPDATE `test` SET `id`='2', `name`='test' WHERE `id` = '2' AND `name` IS NULL LIMIT 1
                     51 Query       SELECT * FROM `test` LIMIT 0,100
                     51 Query       SELECT COUNT(1) FROM `test`

Sui sistemi basati su *NIX puoi usare grep per iniziare

grep 'SELECT\|INSERT\|UPDATE' querylog.log

Oppure diventa più complicato e inizia a fare cose come:

grep 'SELECT\|INSERT\|UPDATE' querylog.log | awk '{$1="";$2="";print}'

Questo ti darebbe qualcosa del genere, non perfetto ma più vicino:

  51 Query UPDATE `test` SET `id`='2', `name`='test' WHERE `id` = '2' AND `name` IS NULL LIMIT 1
  SELECT * FROM `test` LIMIT 0,100
  SELECT COUNT(1) FROM `test`
  51 Query INSERT INTO `test` (`id`,`name`) VALUES ('3','testing')
  SELECT * FROM `test` LIMIT 0,100
  SELECT COUNT(1) FROM `test`