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

Získejte úplný řetězec dotazu MySQL při vložení nebo aktualizaci

Aktuální SQL dotaz můžete získat jako řetězec s následujícím příkazem:

SELECT info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE id = CONNECTION_ID()

Takže co musíte udělat, je vytvořit TRIGGER který běží na operacích vkládání a/nebo aktualizace ve vaší tabulce, což by mělo (i) získat aktuální příkaz SQL a (ii) vložte jej do jiné tabulky, například takto:

DELIMITER |

CREATE TRIGGER log_queries_insert BEFORE INSERT ON `your_table`
FOR EACH ROW
BEGIN
    DECLARE original_query VARCHAR(1024);
    SET original_query = (SELECT info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE id = CONNECTION_ID());
    INSERT INTO `app_sql_debug_log`(`query`) VALUES (original_query);
END;
|
DELIMITER ;

Budete muset vytvořit dva spouštěče – jeden pro aktualizace a jeden pro vložení. Spouštěč vloží nový dotaz jako řetězec do app_sql_debug_log tabulky v query sloupec.



  1. Proces zabíjení MySQL znamená, že uživatel nemá dostatek bodů PHP

  2. mysqldump přes SSH do místního počítače

  3. Android Room + funkce okna

  4. Vysoká numerická přesnost plave s MySQL a SQLAlchemy ORM