IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

Création d'un événement [MySQL-5.6]


Sujet :

SQL Procédural MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2011
    Messages : 51
    Points : 80
    Points
    80
    Par défaut Création d'un événement
    Bonjour,

    Je souhaite lire un fichier de manière récurrente situé dans le répertoire (C:/toto/killmassprocess.sql) en créant un événement pour supprimer des processus dans MySQL.
    J'utilise ce code qui ne contient pas d'erreur mais je ne parviens pas à créer l'événement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DELIMITER ; 
     CREATE EVENT ev_kill_massprocess 
     
     ON SCHEDULE 
     EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP ON COMPLETION PRESERVE ENABLE 
     DO 
     
     SOURCE C:/toto/killmassprocess.sql 
     
     DELIMITER $$
    Le fichier .sql contient la liste de tous les Identifiants des processus à supprimer. (kill 15; kill 16; etc ...).
    Quelqu'un aurait il un solution?

    Cordialement.

    Pierre

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2011
    Messages : 51
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par PierrePM13 Voir le message
    Bonjour,

    Je souhaite lire un fichier de manière récurrente situé dans le répertoire (C:/toto/killmassprocess.sql) en créant un événement pour supprimer des processus dans MySQL.
    J'utilise ce code qui ne contient pas d'erreur mais je ne parviens pas à créer l'événement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DELIMITER ; 
     CREATE EVENT ev_kill_massprocess 
     
     ON SCHEDULE 
     EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP ON COMPLETION PRESERVE ENABLE 
     DO 
     
     SOURCE C:/toto/killmassprocess.sql 
     
     DELIMITER $$
    Le fichier .sql contient la liste de tous les Identifiants des processus à supprimer. (kill 15; kill 16; etc ...).
    Quelqu'un aurait il un solution?

    Cordialement.

    Pierre
    Bonjour,

    Pour répondre à ma question :

    Code procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    DELIMITER $$
    DROP PROCEDURE IF EXISTS  kill_user_processes$$ 
     
    CREATE PROCEDURE `kill_user_processes`(
     
    ) -- IN user_to_kill VARCHAR(255)
    READS SQL DATA
    BEGIN
     
      DECLARE name_val VARCHAR(255);
      DECLARE no_more_rows BOOLEAN; -- true or false
      DECLARE loop_cntr INT DEFAULT 0;
      DECLARE num_rows INT DEFAULT 0;
     
      DECLARE friends_cur CURSOR FOR
        SELECT CONCAT('KILL ', id, ';')
    	FROM
    		information_schema.processlist
    	WHERE
    		user = 'root' AND Time > 100 -- user = user_to_kill (parametre IN)
    			AND LEFT(Host, 9) = 'localhost'
    			AND DB = 'PCSecurite4';
     
      DECLARE CONTINUE HANDLER FOR NOT FOUND
        SET no_more_rows = TRUE;
     
      OPEN friends_cur;
    SELECT FOUND_ROWS() INTO num_rows;
     
      the_loop: LOOP
     
        FETCH  friends_cur
        INTO   name_val;
     
        IF no_more_rows THEN
            CLOSE friends_cur;
            LEAVE the_loop;
        END IF;
     
     
     SET @s = name_val;
        PREPARE stmt FROM @s;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
     
    SELECT name_val;
     
        SET loop_cntr = loop_cntr + 1;
     
      END LOOP the_loop;
     
    SELECT num_rows, loop_cntr;
     
    END $$
    DELIMITER ;
    Code événement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DELIMITER $$
    GRANT EVENT ON pcsecurite4.* TO root@10.1.21.144$$
    DROP EVENT IF EXISTS ev_kill_massprocess_01$$
    CREATE EVENT ev_kill_massprocess_10
      ON SCHEDULE
        EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP ON COMPLETION PRESERVE ENABLE 
      DO
      CALL kill_user_processes$$
    DELIMITER ;
    Ce code permet de supprimer automatiquement tous les processus dont la durée dépasse 100 secondes.

    Cordialement.

    Pierre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création de l'évènement MouseMiddleButtonDownEvent
    Par al2000 dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 02/05/2013, 09h17
  2. Réponses: 4
    Dernier message: 03/09/2009, 16h09
  3. Création d'autres évènements
    Par fethi_09dz dans le forum Langage
    Réponses: 2
    Dernier message: 21/08/2008, 18h08
  4. [VBA-Excel] Création de l'événement d'un clic droit
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/08/2006, 12h36
  5. Création dynamique d'évènements
    Par thierrybatlle dans le forum Access
    Réponses: 1
    Dernier message: 14/04/2006, 19h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo