
{"id":641,"date":"2009-06-29T15:21:05","date_gmt":"2009-06-29T14:21:05","guid":{"rendered":"http:\/\/dasini.net\/blog\/?p=641"},"modified":"2009-06-29T15:34:42","modified_gmt":"2009-06-29T14:34:42","slug":"le-programmateur-d%e2%80%99evenements-event-scheduler-part-66","status":"publish","type":"post","link":"https:\/\/dasini.net\/blog\/2009\/06\/29\/le-programmateur-d%e2%80%99evenements-event-scheduler-part-66\/","title":{"rendered":"Le programmateur d\u2019\u00e9v\u00e9nements ( Event Scheduler ) (part 6\/6)"},"content":{"rendered":"<p><!-- \t \t --><\/p>\n<address>(<a title=\"Le programmateur d\u2019\u00e9v\u00e9nements ( Event Scheduler ) (part 5\/6)\" href=\"http:\/\/dasini.net\/blog\/2009\/06\/24\/le-programmateur-devenements-event-scheduler-part-56\/\">&lt;- pr\u00e9c\u00e9dent<\/a>)<\/address>\n<p><!-- \t \t --><\/p>\n<p><!-- \t\t@page { margin: 2cm } \t\tH4.western { font-family: \"Arial\", sans-serif; font-size: 11pt; font-style: italic } \t\tH4.cjk { font-family: \"Lucida Sans Unicode\"; font-size: 11pt; font-style: italic } \t\tH4.ctl { font-family: \"Tahoma\"; font-size: 11pt; font-style: italic } \t\tCODE { font-family: \"Courier New\", monospace } --><\/p>\n<h4 style=\"margin-bottom: 0.21cm; page-break-after: avoid;\" lang=\"fr-FR\">Limitations et restrictions<\/h4>\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">Certaines commandes MySQL ne sont pas permises dans un \u00e9v\u00e9nement.<\/p>\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">Verrouiller une table est interdit: <em>LOCK TABLES<\/em>, <em>UNLOCK TABLES<\/em>.<\/p>\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">Il n&rsquo;est malheureusement pas possible de charger des donn\u00e9es avec la commande <em>LOAD DATA INFILE.<\/em><\/p>\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">Les requ\u00eates pr\u00e9par\u00e9es (<em>PREPARED STATEMENT)<\/em> ne peuvent \u00eatre cr\u00e9\u00e9es dans un \u00e9v\u00e9nement.<\/p>\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">La r\u00e9cursivit\u00e9.<\/p>\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">Un \u00e9v\u00e9nement ne peut \u00eatre cr\u00e9\u00e9, modifi\u00e9 ou supprim\u00e9 par un d\u00e9clencheur, une proc\u00e9dure stock\u00e9e ou un autre \u00e9v\u00e9nement.<\/p>\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">De plus, on ne peut pas cr\u00e9er, modifier ou supprimer un d\u00e9clencheur ou une proc\u00e9dure stock\u00e9e dans un \u00e9v\u00e9nement.<\/p>\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">La suppression d&rsquo;une base de donn\u00e9es (<em>DROP DATABASE<\/em>) entraine la suppression de tous les objets qu&rsquo;elle contient, donc les \u00e9v\u00e8nements aussi.<\/p>\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">Un \u00e9v\u00e9nement d\u00e9sactiv\u00e9 (<em>DISABLE<\/em>, <em>DISABLE ON SLAVE<\/em>) est supprim\u00e9 en cas d&rsquo;arr\u00eat du serveur.<\/p>\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">Le <em>DEFINER<\/em> doit avoir les droits n\u00e9cessaires pour l&rsquo;ex\u00e9cution de l&rsquo;\u00e9v\u00e8nement, cet utilisateur doit bien entendu exister. S&rsquo;il est supprim\u00e9, renomm\u00e9 ou si ses privil\u00e8ges ne sont plus adapt\u00e9s, l&rsquo;ex\u00e9cution de l&rsquo;\u00e9v\u00e8nement \u00e9choue.<\/p>\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">\n<address style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">mysql&gt; DROP  USER daz@localhost;<\/address>\n<address style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">Query OK, 0 rows affected (0.00 sec)<\/address>\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">\n<p><!-- \t \t --><br \/>\n<!-- \t \t --><\/p>\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">En \u00e9ditant le journal des erreurs:<\/p>\n<p><!-- \t \t --><\/p>\n<address style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">080527 23:09:05 [Note] Event Scheduler: [daz@localhost].[_event.second_event] started in thread 46.<\/address>\n<address style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">080527 23:09:05 [ERROR] Event Scheduler: [daz@localhost].[_event.second_event] execution failed, failed to authenticate the user.<\/address>\n<address style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">080527 23:09:05 [ERROR] Event Scheduler: [daz@localhost][_event.second_event] There is no &lsquo;daz&rsquo;@&rsquo;localhost&rsquo; registered<\/address>\n<address style=\"margin-bottom: 0.21cm; font-weight: normal;\" lang=\"fr-FR\"><span style=\"background: transparent none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;\">080527 23:09:05 [Note] Event Scheduler: [daz@localhost].[_event.second_event] event execution failed.<\/span><\/address>\n<p style=\"margin-bottom: 0.21cm; font-weight: normal;\" lang=\"fr-FR\">\n<p style=\"margin-bottom: 0.21cm; font-weight: normal;\" lang=\"fr-FR\">\n<p style=\"margin-bottom: 0.21cm;\" lang=\"fr-FR\"><span style=\"font-family: Arial,sans-serif;\"><span style=\"font-size: small;\"><em><strong>Conclusion<\/strong><\/em><\/span><\/span><\/p>\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">Comme vous avez pu le constater tout au long de cet article, le programmateur d&rsquo;\u00e9v\u00e8nements est bien plus qu&rsquo;un simple gadget,  un v\u00e9ritable outil qui s&rsquo;ajoute \u00e0 la palette de l&rsquo;administrateur de base de donn\u00e9es MySQL.<\/p>\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\">Malgr\u00e9 certaines limitations, comme l&rsquo;impossibilit\u00e9 de lancer des commandes syst\u00e8mes ou des scripts externes, ce planificateur facilitera la vie du DBA en lui donnant la possibilit\u00e9 d&rsquo;automatiser certaines t\u00e2ches de maintenance.<\/p>\n<p><!-- \t \t --><br \/>\n<!-- \t \t --><br \/>\n<!-- \t \t --><\/p>\n<p style=\"margin-bottom: 0cm;\" lang=\"fr-FR\"><em>(<a title=\"Le programmateur d\u2019\u00e9v\u00e9nements ( Event Scheduler ) (part 1\/6)\" href=\"http:\/\/dasini.net\/blog\/2009\/04\/20\/le-programmateur-devenements-event-scheduler-part-16-2\/\">D\u00e9but de l&rsquo;article<\/a>)<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Limitations et restrictions<\/p>\n<p>Certaines commandes MySQL ne sont pas permises dans un \u00e9v\u00e9nement.<\/p>\n<p>Verrouiller une table est interdit: LOCK TABLES, UNLOCK TABLES.<\/p>\n<p>Il n&rsquo;est malheureusement pas possible de charger des donn\u00e9es avec la commande LOAD DATA INFILE.<\/p>\n<p>Les requ\u00eates pr\u00e9par\u00e9es (PREPARED STATEMENT) ne peuvent \u00eatre cr\u00e9\u00e9es dans un \u00e9v\u00e9nement.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":""},"categories":[8],"tags":[104,65,122],"class_list":["post-641","post","type-post","status-publish","format-standard","hentry","category-mysql","tag-event","tag-event-scheduler","tag-programmateur-devenements"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9LfWW-al","jetpack-related-posts":[{"id":634,"url":"https:\/\/dasini.net\/blog\/2009\/06\/24\/le-programmateur-devenements-event-scheduler-part-56\/","url_meta":{"origin":641,"position":0},"title":"Le programmateur d&rsquo;\u00e9v\u00e9nements ( Event Scheduler ) (part 5\/6)","author":"Olivier DASINI","date":"24 juin 2009","format":false,"excerpt":"Appel d'une proc\u00e9dure stock\u00e9e Il est possible d'appeler des proc\u00e9dures stock\u00e9es dans un \u00e9v\u00e9nement. mysql> CREATE EVENT `_event`.`appel_ps` ON SCHEDULE AT CURRENT_TIMESTAMP DO \/*Appel de la proc\u00e9dure stock\u00e9e*\/ CALL pro_stock.insert_profil('Olivier', 'DASINI', 'Orange');","rel":"","context":"Dans &quot;MySQL&quot;","block_context":{"text":"MySQL","link":"https:\/\/dasini.net\/blog\/category\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":622,"url":"https:\/\/dasini.net\/blog\/2009\/06\/16\/le-programmateur-devenements-event-scheduler-part-46\/","url_meta":{"origin":641,"position":1},"title":"Le programmateur d&rsquo;\u00e9v\u00e9nements ( Event Scheduler ) (part 4\/6)","author":"Olivier DASINI","date":"16 juin 2009","format":false,"excerpt":"Insertions de donn\u00e9es dans une table, toutes les 30 secondes mysql> SELECT * FROM _event.insert_event ; mysql> DELIMITER \u20ac\u20ac mysql> CREATE EVENT `_event`.`second_event` ON SCHEDULE EVERY 30 SECOND DO BEGIN \/*selectionne la val maximale de la colonne fois. Si elle vaut NULL alors retourne la valeur 0 dans la variable\u2026","rel":"","context":"Dans &quot;MySQL&quot;","block_context":{"text":"MySQL","link":"https:\/\/dasini.net\/blog\/category\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":614,"url":"https:\/\/dasini.net\/blog\/2009\/05\/06\/le-programmateur-devenements-event-scheduler-part-36\/","url_meta":{"origin":641,"position":2},"title":"Le programmateur d&rsquo;\u00e9v\u00e9nements ( Event Scheduler ) (part 3\/6)","author":"Olivier DASINI","date":"6 mai 2009","format":false,"excerpt":"G\u00e9rer les \u00e9v\u00e8nements MySQL propose plusieurs m\u00e9thodes pour visualiser les \u00e9v\u00e8nements. La m\u00e9thode la plus pratique consiste \u00e0 aller chercher l'information dans la table event de la base de donn\u00e9es des m\u00e9ta-donn\u00e9es information_schema: mysql> SELECT * FROM information_schema.EVENTS;","rel":"","context":"Dans &quot;MySQL&quot;","block_context":{"text":"MySQL","link":"https:\/\/dasini.net\/blog\/category\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":606,"url":"https:\/\/dasini.net\/blog\/2009\/04\/30\/le-programmateur-devenements-event-scheduler-part-26\/","url_meta":{"origin":641,"position":3},"title":"Le programmateur d&rsquo;\u00e9v\u00e9nements ( Event Scheduler ) (part 2\/6)","author":"Olivier DASINI","date":"30 avril 2009","format":false,"excerpt":"Cr\u00e9er un \u00e9v\u00e9nement Pour cr\u00e9er notre premier \u00e9v\u00e9nement, un coup d'oeil dans la documentation de MySQL nous donne les informations suivantes:","rel":"","context":"Dans &quot;MySQL&quot;","block_context":{"text":"MySQL","link":"https:\/\/dasini.net\/blog\/category\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":595,"url":"https:\/\/dasini.net\/blog\/2009\/04\/20\/le-programmateur-devenements-event-scheduler-part-16-2\/","url_meta":{"origin":641,"position":4},"title":"Le programmateur d&rsquo;\u00e9v\u00e9nements ( Event Scheduler ) (part 1\/6)","author":"Olivier DASINI","date":"20 avril 2009","format":false,"excerpt":"Poursuivons l'exploration des fonctionnalit\u00e9s phares de MySQL 5.1, et penchons-nous sur le programmateur d'\u00e9v\u00e8nements (Event Scheduler) pr\u00e9sent depuis MySQL 5.1.6 . Cet article est r\u00e9dig\u00e9 avec la version 5.1.22 de MySQL. Qu'est-ce qu'un programmateur d'\u00e9v\u00e8nements ? Le programmateur d'\u00e9v\u00e9nements ou \u00ab event scheduler \u00bb offre la possibilit\u00e9, \u00e0 l'administrateur de\u2026","rel":"","context":"Dans &quot;MySQL&quot;","block_context":{"text":"MySQL","link":"https:\/\/dasini.net\/blog\/category\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":275,"url":"https:\/\/dasini.net\/blog\/2008\/12\/03\/les-nouveautes-de-mysql-51-part-25\/","url_meta":{"origin":641,"position":5},"title":"Les nouveaut\u00e9s de MySQL 5.1 &#8212; (part 2\/5)","author":"Olivier DASINI","date":"3 d\u00e9cembre 2008","format":false,"excerpt":"Pouvoir automatiser ses t\u00e2ches de mani\u00e8re fiable et simple est le r\u00eave de tout administrateur de base de donn\u00e9es. Le programmateur d'\u00e9v\u00e8nements (Event Scheduler) est un planificateur de t\u00e2ches (CRON-like) embarqu\u00e9 dans MySQL 5.1.","rel":"","context":"Dans &quot;MySQL&quot;","block_context":{"text":"MySQL","link":"https:\/\/dasini.net\/blog\/category\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts\/641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/comments?post=641"}],"version-history":[{"count":9,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts\/641\/revisions"}],"predecessor-version":[{"id":643,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts\/641\/revisions\/643"}],"wp:attachment":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/media?parent=641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/categories?post=641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/tags?post=641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}