Bonjour,
Je cherche à faire un cron avec requête de creation d'index pour une table mysql. Mais je ne sais pas comment faire !!! (débutant linux), quelqu'un peut il m'aider ????
Version imprimable
Bonjour,
Je cherche à faire un cron avec requête de creation d'index pour une table mysql. Mais je ne sais pas comment faire !!! (débutant linux), quelqu'un peut il m'aider ????
Peux tu expliquer exactement ce que tu veux faire ?
Recréer un cron en mysql ou exécuter une requête mysql sous cron ? (ou autre chose)
Je voudrais créer un index dans ma bd, et je ne peux le faire que le soir. Donc je voudrais créer un cron qui execute une requete sql dans ma bd...
c'est à dire :
1- se connecter au serveur mysql et a la bd
2- executer la requete
3 (idéalement)-envoyer un mail de succès ou echec après la requête.
4- se déconnecter de la bd.
Merci, je suis nouveau sous linux et j'espere que ce que je dis est cohérent :oops:
Ok alors :)
dans ton cron tu mets en commande
Code:mysql -u user_name -p password -e "commande1;commande2" > fichier_log > logiciel_denvoi_demail 2>&1
Merci beaucoup ! je vais tester ça ! :king:
Tient nous au courant :)
exusez mon reatrd !
Ça ne fonctionne pas !! Je n'ai pas de fichiers log. pourtant je les avaient bien spécifiés dans mon cron...
je vous donne ma ligne dans crontab:
Que veut dire /dev/null ?Code:
1
2 00 17 * * * /root/update.cmd >> /dev/null
et voila mon fichier update.cmd
Dois je créer le fichier log manuellement ?Code:
1
2
3 #!/bin/sh /chemin/vers/mysql/mysql -u root -e "update ...." > /chemin/vers/log
Les permissions sont a 777 pour update.cmd ...
Ou est le problème !!:bug:
Vérifie qu'il y a bien les droit d'écriture dans le dossier du log.
Tu peux aussi créer le fichier log manuellement en mettant bien ses droits à 777.
Es-tu sur du chemin vers MySQL ?
Le /dev/null dans ton cron est inutile.
Tu peux faire plus simplement :
En changeant biensur UPDATE.cmdCode:00 17 * * * /root/UPDATE.cmd > fichier_log 2>&1
/dev/null signifie : tu envoi le résultat de la commande dans un trou noir.Code:
1
2 #!/bin/sh /chemin/vers/mysql/mysql -u root -e "update ...."
As tu bien utilisé crontab -e pour mettre ton cron en place ?
Enfin,
Si tu as un password avec ton mysql (sinon c'est bien la commande que tu as utilisé).Code:/chemin/vers/mysql/mysql -u root -p password -e "update ...." > /chemin/vers/log
SALUT !
Ça fonctionne enfin, mais j'ai fait une modif un peu bizarre ! :
J'ai ajouté un mot de passe à ma bd (question de sécurité) mais la chose bizarre qui se passe est que quand je me connect avec -p password, mon fichier log m'indique que le mot de passe est incorrecte, mais quand j'utilise --password=password sa fonctionne ! (c'est censé être des synonymes !).
Voila, pour ceux qui auraient une explication ou qui tomberaient sur le même problème que moi.
Merci pour votre aide !
Non ce n'est pas tout à fait pareil : la version -- s'utilise avec --[variable]=[valeur], la version simple -p demande le mot de passe en interactif ;)
Tout s'explique alors !
Merci beaucoup !! :king: