La raison la plus probable pour laquelle votre commande échoue est que vous n'avez pas fourni de chemin absolu pour mysql. Faites-le de cette façon
/path/to/mysql -uderp_example -pexample -hlocalhost -Dexample -e"TRUNCATE TABLE juice box"
^^^^^^^^
Cela devrait très bien fonctionner.
C'est parce que cron s'exécute sous un compte qui n'a pas de PATH défini ou qui n'inclut pas de chemin vers mysql.
Il existe maintenant une autre option - utiliser un événement MySQL
CREATE EVENT update_date_column
ON SCHEDULE EVERY 1 HOUR STARTS NOW()
DO TRUNCATE TABLE juicebox;
Si vous décidez d'opter pour une approche événementielle :
- utiliser
SHOW EVENTS
pour lister les événements créés avec leurs attributs (ex.status
) - utilisez
SHOW PROCESSLIST
pour vérifier si le planificateur d'événements est activé. S'il est activé, vous devriez voir un processus "Daemon
" par l'utilisateur "event_scheduler
". - utiliser
SET GLOBAL event_scheduler = ON;
pour activer le planificateur s'il n'est pas activé actuellement. - Pour en savoir plus sur la configuration du planificateur d'événements, lisez ici