将 mySQL 查询作为 cron 作业运行?

2022-08-30 10:12:55

我想从所有超过1周的整个数据库中清除我的SQL数据库,我想每晚这样做。所以,我要设置一个cron工作。如何查询mySQL而无需每次都手动输入密码?

PHP 中的查询如下所示:

mysql_query("DELETE FROM tbl_message WHERE DATEDIFF( NOW( ) ,  timestamp ) >=7");

有没有办法将其作为 shell 脚本运行?如果没有,有没有办法让cron运行一个php文件?


答案 1

我个人发现使用MySQL事件调度程序比cron更容易。

启用它

SET GLOBAL event_scheduler = ON;

并创建一个类似如下的事件:

CREATE EVENT name_of_event
ON SCHEDULE EVERY 1 DAY
STARTS '2014-01-18 00:00:00'
DO
DELETE FROM tbl_message WHERE DATEDIFF( NOW( ) ,  timestamp ) >=7;

仅此而已。

在此处阅读有关语法的详细信息此处是有关它的更多常规信息。


答案 2

尝试创建如下 shell 脚本:

#!/bin/bash

mysql --user=[username] --password=[password] --database=[db name] --execute="DELETE FROM tbl_message WHERE DATEDIFF( NOW( ) ,  timestamp ) >=7"

然后,您可以将其添加到 cron


推荐