Bonjour,
Je souhaite automatiser la suppression des processus dépassant la durée de 60 secondes sur une base de données. Pour cela je créé une procédure et un événement qui appelle cette procédure.
Code procédure :
DELIMITER $$
CREATE DEFINER=`root`@`10.1.21.144` PROCEDURE `sp_select_pcsecurite4_massprocess_id`()
BEGIN
SELECT
CONCAT('KILL ', id, ';')
FROM
information_schema.processlist
WHERE
user = 'root' AND Time > 60
AND LEFT(Host, 9) = 'localhost'
AND DB = 'PCSecurite4'
ORDER BY Id INTO OUTFILE 'C:/toto/killProcess.txt';
END$$
DELIMITER ;
Code événement :
-- Serveur Maitre
-- Répétition de l'événement toutes les minutes
DELIMITER $$
GRANT EVENT ON pcsecurite4.* TO
root@10.1.21.144$$
CREATE EVENT ev_kill_massprocess_01
ON SCHEDULE
EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP ON COMPLETION PRESERVE ENABLE
DO
CALL sp_select_pcsecurite4_massprocess_id()$$
SOURCE C:/toto/killProcess.txt
DELIMITER ;
Le fichier "C:/toto/killProcess.txt" généré par la procédure contient la liste des processus à supprimer (Kill 1;Kill 2;Kill 3; ...) , mais apparemment la commande "SOURCE" qui lit et exécute le code (Kill 1;Kill 2;Kill 3; ...) ne fonctionne pas dans un événement ou une procédure avec l'éditeur Workbench.
Je suis obligé de passer par l'outil en ligne de commande pour effectuer la tâche. En conséquence il n'y a plus d'automatisation de la suppression puisque l'opération est manuelle.
L'éditeur workbench ne me renvoi pas d'erreur particulière.
Existe t'il un moyen d'automatiser cette tâche?
Cordialement.
Pierre