Lý do rất có thể khiến lệnh của bạn không thành công là bạn đã không cung cấp một đường dẫn tuyệt đối cho mysql. Làm theo cách này
/path/to/mysql -uderp_example -pexample -hlocalhost -Dexample -e"TRUNCATE TABLE juice box"
^^^^^^^^
Nó sẽ hoạt động tốt.
Đó là do cron thực thi trong một tài khoản không có PATH được xác định hoặc không bao gồm đường dẫn đến mysql.
Bây giờ có một tùy chọn khác - sử dụng sự kiện MySQL
CREATE EVENT update_date_column
ON SCHEDULE EVERY 1 HOUR STARTS NOW()
DO TRUNCATE TABLE juicebox;
Nếu bạn quyết định sử dụng cách tiếp cận sự kiện:
- sử dụng
SHOW EVENTS
để liệt kê các sự kiện đã tạo với các thuộc tính của chúng (ví dụ:status
) - sử dụng
SHOW PROCESSLIST
để kiểm tra xem bộ lập lịch sự kiện đã được bật chưa. Nếu nó BẬT, bạn sẽ thấy một quy trình "Daemon
"bởi người dùng"event_scheduler
". - sử dụng
SET GLOBAL event_scheduler = ON;
để bật bộ lập lịch nếu nó hiện chưa được bật. - Tìm hiểu thêm về cách định cấu hình bộ lập lịch sự kiện, hãy đọc tại đây