sql >> Databáze >  >> RDS >> Mysql

Jak mohu přihlásit pouze nezpracované dotazy v MySQL?

Chcete-li povolit úplný dotaz na protokol, přidejte do souboru my.cnf následující:

log=/var/log/mysqldquery.log

Výše uvedené zaznamená všechny dotazy do souboru protokolu.

Po provedení změn v souboru my.cnf nezapomeňte restartovat službu mysql.

Příklad výstupu z akcí přes SequelPro (mac klient):

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`

Na systémech založených na *NIX můžete ke spuštění použít grep

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

Nebo se snažte zamotat a začněte dělat věci jako:

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

To by vám dalo něco takového, ne dokonalé, ale bližší:

  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`


  1. Přesunutí databáze MariaDB do šifrovaných a nešifrovaných států

  2. Jak seskupit řádky mysql se stejnou hodnotou sloupce do jednoho řádku?

  3. Jak analyzovat aktivitu jedné databáze na serveru SQL

  4. Jak zacházet s nulovým polem při exportu tabulek MYSQL do CSV