windows任务计划执行mysql存储过程:
Proc_Del_Alltb():删除test_db数据库中所有记录;
环境:
mysql 5.0.83我现在是这样操作的:
在CMD下添加任务:
at 0:15 /every:M,T,W,Th,F,S,Su "d:\mysql\mysql server 5.0\bin\mysqldump.exe" -hlocalhost -uroot -pxxx test_db "call Proc_Del_Alltb()"再到任务计划中运行该JOB。查询数据库发现,并没有执行成功,数据依然存在。再MYSQL环境下执行call Proc_Del_Alltb(),数据删除成功!这是怎么回事,是不是AT语句写的不对?
Proc_Del_Alltb():删除test_db数据库中所有记录;
环境:
mysql 5.0.83我现在是这样操作的:
在CMD下添加任务:
at 0:15 /every:M,T,W,Th,F,S,Su "d:\mysql\mysql server 5.0\bin\mysqldump.exe" -hlocalhost -uroot -pxxx test_db "call Proc_Del_Alltb()"再到任务计划中运行该JOB。查询数据库发现,并没有执行成功,数据依然存在。再MYSQL环境下执行call Proc_Del_Alltb(),数据删除成功!这是怎么回事,是不是AT语句写的不对?
mysql -uroot -p -e "call Proc_Del_Alltb()"
-e是什么意思?
file)
多建几个计划任务
Database changedmysql> create table tb_test(id int);
Query OK, 0 rows affected (0.11 sec)mysql> select * from tb_test;
Empty set (0.00 sec)mysql> DROP PROCEDURE IF EXISTS up_test;
-> //
Query OK, 0 rows affected (0.09 sec)mysql> CREATE PROCEDURE up_test ()
-> BEGIN
-> INSERT INTO tb_test values(1);
-> END;
->
-> //
Query OK, 0 rows affected (0.02 sec)mysql> delimiter ;
2.创造执行存储过程的bat文件:Up_test.bat"D:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe" -hlocalhost -uroot -pXXX -Dtest -e "call up_test()"
3.执行Schedule Tasks,测试C:\Documents and Settings\Administrator>schtasks /run /TN "schedule task test"
成功: 尝试运行 "schedule task test"。
执行计划任务的结果
mysql> select * from tb_test;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.00 sec)另外建议你不要讲Command写到schedule tasks里面,因为这样子以后修改维护起来很麻烦,最好将Command写到Bat文件里面去,Schedule tasks调用Bat即可。我给你的例子也是基于这个思路的。